From 4f4e029a326cae0b555b677a876d3759cf507de1 Mon Sep 17 00:00:00 2001 From: Ezra Brooks Date: Fri, 14 Nov 2025 10:28:21 -0700 Subject: [PATCH 1/2] Ban function binding --- eslint.config.ts | 8 ++++++++ src/core/Action.ts | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/eslint.config.ts b/eslint.config.ts index 2586b60e0..1d447e746 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -31,6 +31,14 @@ export default defineConfig( "@typescript-eslint/no-empty-function": 0, "prefer-template": 2, "@typescript-eslint/consistent-type-imports": 2, + "no-restricted-syntax": [ + "error", + { + selector: "CallExpression[callee.property.name='bind']", + message: + "Prefer arrow functions over invoking Function.prototype.bind", + }, + ], }, }, { diff --git a/src/core/Action.ts b/src/core/Action.ts index adb792370..8c15a9391 100644 --- a/src/core/Action.ts +++ b/src/core/Action.ts @@ -126,7 +126,7 @@ export default class Action< this.#cancelCallback = cancelCallback; this.ros.on(this.name, (msg) => { if (isRosbridgeSendActionGoalMessage(msg)) { - this.#executeAction.bind(this); + this.#executeAction(msg); } else { throw new Error( "Received unrelated message on Action server event stream!", From 8764a3e2226020c4011994c8a8f411ac6d78788f Mon Sep 17 00:00:00 2001 From: Ezra Brooks Date: Fri, 14 Nov 2025 10:28:46 -0700 Subject: [PATCH 2/2] Fix missing generic type --- src/core/Action.ts | 2 +- src/types/protocol.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/Action.ts b/src/core/Action.ts index 8c15a9391..4c3d670c4 100644 --- a/src/core/Action.ts +++ b/src/core/Action.ts @@ -125,7 +125,7 @@ export default class Action< this.#actionCallback = actionCallback; this.#cancelCallback = cancelCallback; this.ros.on(this.name, (msg) => { - if (isRosbridgeSendActionGoalMessage(msg)) { + if (isRosbridgeSendActionGoalMessage(msg)) { this.#executeAction(msg); } else { throw new Error( diff --git a/src/types/protocol.ts b/src/types/protocol.ts index d533da4a2..f45cde480 100644 --- a/src/types/protocol.ts +++ b/src/types/protocol.ts @@ -260,9 +260,9 @@ export interface RosbridgeSendActionGoalMessage compression?: string; } -export function isRosbridgeSendActionGoalMessage( +export function isRosbridgeSendActionGoalMessage( message: RosbridgeMessageBase, -): message is RosbridgeSendActionGoalMessage { +): message is RosbridgeSendActionGoalMessage { return message.op === "send_action_goal"; }