0ad/binaries/data/mods/mod/tools/dap/daphandler.js
Dunedan 93ce94655d
Use @stylistic/brace-style for eslint
Up to now `eslint-plugin-brace-rules` was used to enforce a common brace
style for JavaScript code. This plugin was however updated the last time
over 9 years ago and will be incompatible with ESLint v10, as that
[removes `context.getSourceCode()`][1], the plugin relies on.

To keep the eslint config working with ESLint v10, this replaces
`eslint-plugin-brace-rules` with the [`@stylistic/brace-style`][2] rule
from `@stylistic/eslint-plugin`, a package we already use.

While `@stylistic/brace-style` doesn't offer an option to format braces
in exactly the same way as before, the "allman" style seems to be the
one closest to the existing code.

[1]: https://eslint.org/blog/2025/11/eslint-v10.0.0-alpha.0-released/#removed-deprecated-rule-context-members
[2]: https://eslint.style/rules/brace-style
2026-01-12 21:33:52 +01:00

70 lines
1.5 KiB
JavaScript

import { logger } from 'tools/dap/logger.js';
export class DapProtocolHandler
{
constructor(jsDebugger)
{
this.commands = {};
this.jsDebugger = jsDebugger;
this.logger = logger.getLogger("DAPProtocolHandler");
}
registerCommand(name, fn)
{
this.logger.info(`Registering command: ${name}`);
this.commands[name] = fn;
}
handleRequest(req)
{
if (req.type !== 'request' || !req.command)
{
this.logger.error(`Invalid request: ${JSON.stringify(req)}`);
return this.errorResponse(req, 'Invalid request format');
}
const handler = this.commands[req.command];
if (!handler)
return this.errorResponse(req, `Unknown command ${req.command}`);
try
{
this.logger.info(`Handling command: ${req.command}`);
return handler(req);
}
catch(error)
{
this.logger.error(`Error handling command ${req.command}:`, error);
this.logger.error(uneval(error.stack));
return this.errorResponse(req, error.message || 'An error occurred while processing the request');
}
}
successResponse(req, result)
{
this.logger.info(`Response to ${req.command}`, result);
const response = {
'type': 'response',
'request_seq': req.seq,
'success': true,
'command': req.command,
'body': result
};
return response;
}
errorResponse(req, error)
{
this.logger.error(`Error in ${req.command}: ${error}`);
const response = {
'type': 'response',
'request_seq': req.seq,
'success': false,
'command': req.command,
'body': {
'error': error
}
};
return response;
}
}