diff --git a/packages/controller/controller.ts b/packages/controller/controller.ts index 3d3e7cb3..e4299534 100644 --- a/packages/controller/controller.ts +++ b/packages/controller/controller.ts @@ -422,7 +422,7 @@ async function startup() { if (secondSigint) { setBlocking(true); logger.fatal("Caught second interrupt, terminating immediately"); - // eslint-disable-next-line node/no-process-exit + process.exit(1); } @@ -435,7 +435,7 @@ async function startup() { if (secondSigterm) { setBlocking(true); logger.fatal("Caught second termination, terminating immediately"); - // eslint-disable-next-line node/no-process-exit + process.exit(1); } diff --git a/packages/controller/src/BaseConnection.ts b/packages/controller/src/BaseConnection.ts index 18b02086..bda042aa 100644 --- a/packages/controller/src/BaseConnection.ts +++ b/packages/controller/src/BaseConnection.ts @@ -16,7 +16,7 @@ import * as routes from "./routes"; * @alias module:controller/src/BaseConnection */ export default class BaseConnection extends lib.Link { - declare ["connector"]: WsServerConnector; + declare "connector": WsServerConnector; constructor( connector: lib.WebSocketBaseConnector, diff --git a/packages/controller/src/ControlConnection.ts b/packages/controller/src/ControlConnection.ts index e26855c5..8b6f4f28 100644 --- a/packages/controller/src/ControlConnection.ts +++ b/packages/controller/src/ControlConnection.ts @@ -901,7 +901,7 @@ export default class ControlConnection extends BaseConnection { } // A large number of small if statements are unavoidable when reducing the number of updates sent - // eslint-disable-next-line complexity + async handleUserBulkImportRequest(request: lib.UserBulkImportRequest) { let backup: undefined | Awaited>; const updated = new Map(); diff --git a/packages/controller/src/Controller.ts b/packages/controller/src/Controller.ts index 024b0c51..b1ba92e2 100644 --- a/packages/controller/src/Controller.ts +++ b/packages/controller/src/Controller.ts @@ -399,13 +399,13 @@ export default class Controller { async _startDevServer(args: ControllerArgs) { logger.warn("Webpack development mode enabled"); - /* eslint-disable @typescript-eslint/no-var-requires, node/no-unpublished-require */ + const webpack = require("webpack"); const webpackDevMiddleware = require("webpack-dev-middleware"); const webpackConfigs = []; if (args.dev) { - // eslint-disable-next-line node/no-missing-require + webpackConfigs.push(require("../../../webpack.config")({})); // Path outside of build } if (args.devPlugin) { @@ -421,7 +421,7 @@ export default class Controller { } this.app.locals.devPlugins = devPlugins; } - /* eslint-enable @typescript-eslint/no-var-requires, node/no-unpublished-require */ + const compiler = webpack(webpackConfigs); this.devMiddleware = webpackDevMiddleware(compiler, { serverSideRender: true }); diff --git a/packages/controller/src/HostConnection.ts b/packages/controller/src/HostConnection.ts index 86dc1c56..ac23de34 100644 --- a/packages/controller/src/HostConnection.ts +++ b/packages/controller/src/HostConnection.ts @@ -47,7 +47,7 @@ export default class HostConnection extends BaseConnection { this._checkPluginVersions(); for (let event of ["connect", "drop", "resume", "close"] as const) { - // eslint-disable-next-line no-loop-func + this.connector.on(event, () => { for (let plugin of this._controller.plugins.values()) { plugin.onHostConnectionEvent(this, event); diff --git a/packages/create/create.js b/packages/create/create.js index a102c784..84d2ad2a 100755 --- a/packages/create/create.js +++ b/packages/create/create.js @@ -114,7 +114,7 @@ async function execFile(cmd, args) { escaped, { shell: true, - // eslint-disable-next-line node/no-process-env + env: process.platform === "win32" ? { ...process.env, pct: "%" } : undefined, }, (err, stdout, stderr) => { @@ -396,7 +396,7 @@ async function installClusterio(mode, plugins) { } for (let plugin of plugins) { if (!pluginList.has(plugin)) { - // eslint-disable-next-line node/global-require + let pluginInfo = require(require.resolve(plugin, { paths: [process.cwd()] })).plugin; pluginList.set(pluginInfo.name, plugin); } diff --git a/packages/create/escape_arg.js b/packages/create/escape_arg.js index 143257d2..3767ae82 100644 --- a/packages/create/escape_arg.js +++ b/packages/create/escape_arg.js @@ -50,7 +50,7 @@ function escapeArg(arg) { // For all other platforms the command is /bin/sh -c // The command and its arguments are passed as a single argument to the shell. // See https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02 - // eslint-disable-next-line no-lonely-if + if (!/[|&;<>()$`\\"' \t*?\[#~=%]/.test(arg)) { return arg; } diff --git a/packages/create/templates/plugin-js/index.js b/packages/create/templates/plugin-js/index.js index 26c5387d..edfa6a0e 100644 --- a/packages/create/templates/plugin-js/index.js +++ b/packages/create/templates/plugin-js/index.js @@ -40,7 +40,7 @@ const plugin = { //%endif //%if controller -controllerEntrypoint: "./dist/node/controller", + controllerEntrypoint: "./dist/node/controller", //%endif //%if controller & config controllerConfigFields: { diff --git a/packages/create/templates/plugin-js/web/plugin.jsx b/packages/create/templates/plugin-js/web/plugin.jsx index 87c59767..8dc03690 100644 --- a/packages/create/templates/plugin-js/web/plugin.jsx +++ b/packages/create/templates/plugin-js/web/plugin.jsx @@ -35,9 +35,9 @@ function MyTemplatePage() { return -//%if controller // Subscribing requires web content and the controller + //%if controller // Subscribing requires web content and the controller Synced: {String(synced)} Data: {JSON.stringify([...subscribableData.values()])} -//%endif + //%endif ; } diff --git a/packages/create/templates/plugin-ts/web/plugin.tsx b/packages/create/templates/plugin-ts/web/plugin.tsx index e54e0a7c..c8b830fe 100644 --- a/packages/create/templates/plugin-ts/web/plugin.tsx +++ b/packages/create/templates/plugin-ts/web/plugin.tsx @@ -35,9 +35,9 @@ function MyTemplatePage() { return -//%if controller // Subscribing requires web content and the controller + //%if controller // Subscribing requires web content and the controller Synced: {String(synced)} Data: {JSON.stringify([...subscribableData.values()])} -//%endif + //%endif ; } diff --git a/packages/ctl/ctl.ts b/packages/ctl/ctl.ts index 349cc7ec..c2e0c08d 100755 --- a/packages/ctl/ctl.ts +++ b/packages/ctl/ctl.ts @@ -310,7 +310,7 @@ async function startControl() { control.shutdown().catch(err => { setBlocking(true); logger.error(err.stack); - // eslint-disable-next-line node/no-process-exit + process.exit(1); }); }); diff --git a/packages/host/host.ts b/packages/host/host.ts index ec706390..6a3b1a3f 100755 --- a/packages/host/host.ts +++ b/packages/host/host.ts @@ -243,7 +243,7 @@ async function startHost() { if (secondSigint) { setBlocking(true); logger.fatal("Caught second interrupt, terminating immediately"); - // eslint-disable-next-line node/no-process-exit + process.exit(1); } @@ -256,7 +256,7 @@ async function startHost() { if (secondSigterm) { setBlocking(true); logger.fatal("Caught second termination, terminating immediately"); - // eslint-disable-next-line node/no-process-exit + process.exit(1); } diff --git a/packages/host/src/Host.ts b/packages/host/src/Host.ts index 5e113251..839fac5d 100644 --- a/packages/host/src/Host.ts +++ b/packages/host/src/Host.ts @@ -250,7 +250,7 @@ export class HostRouter { * Connects to the controller over the WebSocket and manages intsances. */ export default class Host extends lib.Link { - declare ["connector"]: HostConnector; + declare "connector": HostConnector; router = new HostRouter(this); /** @@ -1201,7 +1201,7 @@ export default class Host extends lib.Link { +------------------------------------------------------------+ ${err.stack}` ); - // eslint-disable-next-line node/no-process-exit + process.exit(1); } } diff --git a/packages/host/src/export.ts b/packages/host/src/export.ts index 262a4fa2..f4fe3846 100644 --- a/packages/host/src/export.ts +++ b/packages/host/src/export.ts @@ -221,7 +221,7 @@ async function loadLayeredIcon( iconLayer.scale(realScale); } - // eslint-disable-next-line no-loop-func + iconLayer.scan(0, 0, iconLayer.bitmap.width, iconLayer.bitmap.height, (x, y, sidx) => { x += xs; y += ys; diff --git a/packages/host/src/server.ts b/packages/host/src/server.ts index 29f81e30..479037c9 100644 --- a/packages/host/src/server.ts +++ b/packages/host/src/server.ts @@ -747,7 +747,7 @@ export class FactorioServer extends events.EventEmitter { this._rconClient.on("authenticated", () => { this._rconReady = true; this.emit("rcon-ready"); - }); + }); this._rconClient.on("end", () => { this._rconClient = null; if (!this._rconReady) { diff --git a/packages/lib/build_mod.d.ts b/packages/lib/build_mod.d.ts index 064d7e81..38717dab 100644 --- a/packages/lib/build_mod.d.ts +++ b/packages/lib/build_mod.d.ts @@ -1,10 +1,10 @@ export interface BuildArgs { - factorioVersion?: string; - dependencies?: Record; - clean?: boolean; - pack?: boolean; - build?: boolean; - outputDir: string; - sourceDir: string; + factorioVersion?: string; + dependencies?: Record; + clean?: boolean; + pack?: boolean; + build?: boolean; + outputDir: string; + sourceDir: string; }; export function build(args: BuildArgs): Promise; diff --git a/packages/lib/src/data/ModPack.ts b/packages/lib/src/data/ModPack.ts index ff30bab3..f6aa2c65 100644 --- a/packages/lib/src/data/ModPack.ts +++ b/packages/lib/src/data/ModPack.ts @@ -291,7 +291,7 @@ export default class ModPack { const sizeBytes = uint32Bytes(entries.length); const itemBytes = entries.flatMap(([key, item]) => [ immutableStringBytes(key), - // eslint-disable-next-line no-use-before-define + propertyTreeBytes(item), ]); return Buffer.concat([ diff --git a/packages/lib/src/data/messages_core.ts b/packages/lib/src/data/messages_core.ts index b4b3f91e..36b85720 100644 --- a/packages/lib/src/data/messages_core.ts +++ b/packages/lib/src/data/messages_core.ts @@ -1,6 +1,6 @@ // Note: Run compile_validator script after making changes to this file. import { TSchema, Type, Static } from "@sinclair/typebox"; -// eslint-disable-next-line node/no-missing-import + import messageValidate from "./message_validate"; // generated file import { StringEnum } from "./composites"; @@ -154,7 +154,7 @@ export class Message { static validate = messageValidate; static fromJSON(json: any) { - /* eslint-disable no-use-before-define */ + if (json.type === "hello") { return MessageHello.fromJSON(json); } if (json.type === "registerHost") { return MessageRegisterHost.fromJSON(json); } if (json.type === "registerControl") { return MessageRegisterControl.fromJSON(json); } @@ -168,7 +168,7 @@ export class Message { if (json.type === "responseError") { return MessageResponseError.fromJSON(json); } if (json.type === "event") { return MessageEvent.fromJSON(json); } if (json.type === "disconnect") { return MessageDisconnect.fromJSON(json); } - /* eslint-enable no-use-before-define */ + throw new Error(`Unrecognized message type ${json.type}`); } } diff --git a/packages/lib/src/datastore.ts b/packages/lib/src/datastore.ts index a305e960..2eb56343 100644 --- a/packages/lib/src/datastore.ts +++ b/packages/lib/src/datastore.ts @@ -137,8 +137,8 @@ export abstract class Datastore< V extends DatastoreValue, U = V, > extends EventEmitter<{ - "update": [ updates: U[] ], -}> { + "update": [ updates: U[] ], + }> { private dirty = false; constructor( diff --git a/packages/lib/src/is_deep_strict_equal.js b/packages/lib/src/is_deep_strict_equal.js index 87e010d4..0f695078 100644 --- a/packages/lib/src/is_deep_strict_equal.js +++ b/packages/lib/src/is_deep_strict_equal.js @@ -1,8 +1,8 @@ -/* eslint-disable node/global-require */ + "use strict"; -// eslint-disable-next-line node/no-process-env + if (process.env.APP_ENV === "browser") { - // eslint-disable-next-line node/no-extraneous-require + module.exports = require("fast-deep-equal/es6"); } else { module.exports = require("util").isDeepStrictEqual; diff --git a/packages/lib/src/link/WebSocket.js b/packages/lib/src/link/WebSocket.js index b85227a1..06879e25 100644 --- a/packages/lib/src/link/WebSocket.js +++ b/packages/lib/src/link/WebSocket.js @@ -1,3 +1,3 @@ "use strict"; -// eslint-disable-next-line node/no-process-env + module.exports = process.env.APP_ENV === "browser" ? window.WebSocket : require("ws"); diff --git a/packages/lib/src/link/connectors.ts b/packages/lib/src/link/connectors.ts index 17806b7d..dd7df5d4 100644 --- a/packages/lib/src/link/connectors.ts +++ b/packages/lib/src/link/connectors.ts @@ -271,7 +271,7 @@ export abstract class WebSocketBaseConnector< this._check("connected"); if (Date.now() - this._lastHeartbeatMs! > 2000 * this._heartbeatInterval!) { logger.verbose("Connector | closing after heartbeat timed out"); - // eslint-disable-next-line node/no-process-env + if (process.env.APP_ENV === "browser") { this._socket!.close(ConnectionClosed.Timeout, "Heartbeat timeout"); } else { @@ -544,7 +544,7 @@ export abstract class WebSocketClientConnector extends WebSocketBaseConnector { logger.fatal(`Uncaught exception:\n${err.stack}`); process.exit(1); @@ -528,7 +528,7 @@ export function handleUnhandledErrors() { logger.fatal(`Unhandled rejection:\n${reason.stack ? reason.stack : reason}`); process.exit(1); }); - /* eslint-enable node/no-process-exit */ + } // for testing only diff --git a/packages/lib/src/plugin_loader.ts b/packages/lib/src/plugin_loader.ts index fa5307cc..45279946 100644 --- a/packages/lib/src/plugin_loader.ts +++ b/packages/lib/src/plugin_loader.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ + /** * Helpers for loading plugins in Node.js * @module lib/plugin_loader diff --git a/packages/lib/src/shared_commands.ts b/packages/lib/src/shared_commands.ts index 71b8b509..e65f925f 100644 --- a/packages/lib/src/shared_commands.ts +++ b/packages/lib/src/shared_commands.ts @@ -58,7 +58,7 @@ export async function handlePluginCommand( let pluginInfo: { name: string }; try { - // eslint-disable-next-line @typescript-eslint/no-var-requires + pluginInfo = require(pluginPath).plugin; } catch (err: any) { logger.error(`Unable to import plugin info from ${args.path}:\n${err.stack}`); diff --git a/packages/web_ui/src/components/BaseConfigTree.tsx b/packages/web_ui/src/components/BaseConfigTree.tsx index 23d03cf5..07e3c6ab 100644 --- a/packages/web_ui/src/components/BaseConfigTree.tsx +++ b/packages/web_ui/src/components/BaseConfigTree.tsx @@ -226,7 +226,7 @@ export default function BaseConfigTree(props: BaseConfigTreeProps) { ; } -// eslint-disable-next-line complexity + function computeTreeData( control: Control, form: FormInstance, diff --git a/plugins/subspace_storage/dole_nn_base.ts b/plugins/subspace_storage/dole_nn_base.ts index 6db51d02..7277e63d 100644 --- a/plugins/subspace_storage/dole_nn_base.ts +++ b/plugins/subspace_storage/dole_nn_base.ts @@ -61,13 +61,13 @@ export function dose( let inp1 = [numreq, instore_adj, store_last_tick / numreq, dole, carry]; // 0..4 let inp2 = [ prev_req / numreq, - numreq / numreq_total_adj, - store_last_tick / numreq_total_adj, - prev_req/instore_adj, - b, - numreq_total_adj, - store_last_tick, - debt, + numreq / numreq_total_adj, + store_last_tick / numreq_total_adj, + prev_req/instore_adj, + b, + numreq_total_adj, + store_last_tick, + debt, ]; // 5..12 let inputs = inp1.concat(inp2); let outputs = [0, 0, 0, 0]; diff --git a/test/create/escape_arg.js b/test/create/escape_arg.js index 808036c5..496737e3 100644 --- a/test/create/escape_arg.js +++ b/test/create/escape_arg.js @@ -11,7 +11,7 @@ async function exec(file, args) { const { stdout, stderr } = await execFile( file, args.map(escapeArg), - // eslint-disable-next-line node/no-process-env + { shell: true, cwd: __dirname, env: { ...process.env, pct: "%"} } ); return { stdout: JSON.parse(stdout), stderr }; diff --git a/test/integration/index.js b/test/integration/index.js index 7a31d23e..fbbc5fb1 100644 --- a/test/integration/index.js +++ b/test/integration/index.js @@ -120,7 +120,7 @@ class TestHostConnector extends lib.WebSocketClientConnector { // Mark that this test takes a lot of time, or depeneds on a test // that takes a lot of time. function slowTest(test) { - // eslint-disable-next-line node/no-process-env + if (process.env.FAST_TEST) { test.skip(); } @@ -221,7 +221,7 @@ function getControl() { } function spawn(name, cmd, waitFor) { - // eslint-disable-next-line node/no-process-env + const silent = process.env.SILENT_TEST; const bootstrap = !controllerProcess || !hostProcess; function log(...args) { @@ -264,7 +264,7 @@ async function spawnNode(name, cmd, waitFor) { before(async function() { this.timeout(40000); - // eslint-disable-next-line node/no-process-env + const silent = process.env.SILENT_TEST; if (silent) { console.log("SILENT_TEST is present in env, loggers after bootstrap will be muted."); @@ -278,7 +278,7 @@ before(async function() { })); // If fast test is enabled then output that it is - // eslint-disable-next-line node/no-process-env + if (process.env.FAST_TEST) { console.log("FAST_TEST is present in env, slow tests will be skipped."); } diff --git a/test/lib/ModStore.test.js b/test/lib/ModStore.test.js index 7730eadd..75c2d1c9 100644 --- a/test/lib/ModStore.test.js +++ b/test/lib/ModStore.test.js @@ -816,24 +816,24 @@ describe("lib/ModStore", function () { assert.equal( typeof firstMod.latest_release.version, "string", - "latest_release version should be string" // eslint-disable-line max-len + "latest_release version should be string" ); assert.equal( typeof firstMod.latest_release.sha1, "string", - "latest_release should have a sha1 string" // eslint-disable-line max-len + "latest_release should have a sha1 string" ); assert.ok(firstMod.latest_release.info_json, "latest_release should have info_json"); assert.equal( typeof firstMod.latest_release.info_json.factorio_version, "string", - "info_json should have factorio_version string" // eslint-disable-line max-len + "info_json should have factorio_version string" ); // Check for an expected field from the user example assert.equal( typeof firstMod.downloads_count, "number", - "First mod should have downloads_count number" // eslint-disable-line max-len + "First mod should have downloads_count number" ); } else { // This should not happen for v1.1 but handles edge cases diff --git a/test/lib/data/ModPack.js b/test/lib/data/ModPack.js index e0dfe8cc..b63b9794 100644 --- a/test/lib/data/ModPack.js +++ b/test/lib/data/ModPack.js @@ -303,7 +303,7 @@ describe("lib/data/ModPack", function() { Buffer.from(str), ]; } - /* eslint-disable indent */ + /* eslint-disable @stylistic/indent */ assert.deepEqual( pack.toModSettingsDat(), Buffer.concat([ @@ -373,7 +373,6 @@ describe("lib/data/ModPack", function() { new Uint8Array(Float64Array.from([1]).buffer), ]) ); - /* eslint-enable indent */ }); }); describe("defaultModPacks", function() { diff --git a/test/lib/plugin_loader.js b/test/lib/plugin_loader.js index fd5126bb..308e3716 100644 --- a/test/lib/plugin_loader.js +++ b/test/lib/plugin_loader.js @@ -46,7 +46,7 @@ describe("lib/plugin_loader", function() { it("should reject on broken plugin", async function() { let brokenMessage; try { - // eslint-disable-next-line node/global-require + require(path.resolve(brokenPlugin)); } catch (err) { brokenMessage = err.message;