()
| 291 | } |
| 292 | |
| 293 | async start(): Promise<void> { |
| 294 | return new Promise((resolve, reject) => { |
| 295 | try { |
| 296 | // eslint-disable-next-line @typescript-eslint/no-require-imports, import/no-nodejs-modules -- HTTP API is desktop-only and lazy-loads Node http at server start. |
| 297 | const http = require("http") as HttpModuleLike; |
| 298 | this.server = http.createServer((req, res) => { |
| 299 | this.handleRequest(req, res).catch((error) => { |
| 300 | tasknotesLogger.error("Request handling error:", { |
| 301 | category: "provider", |
| 302 | operation: "request-handling", |
| 303 | error: error, |
| 304 | }); |
| 305 | this.sendResponse(res, 500, this.errorResponse("Internal server error")); |
| 306 | }); |
| 307 | }); |
| 308 | |
| 309 | this.server.listen(this.plugin.settings.apiPort, API_BIND_HOST, () => { |
| 310 | resolve(); |
| 311 | }); |
| 312 | |
| 313 | this.server.on("error", (err) => { |
| 314 | tasknotesLogger.error("API server error:", { |
| 315 | category: "provider", |
| 316 | operation: "api-server", |
| 317 | error: err, |
| 318 | }); |
| 319 | reject(err); |
| 320 | }); |
| 321 | } catch (error) { |
| 322 | reject(error instanceof Error ? error : new Error(String(error))); |
| 323 | } |
| 324 | }); |
| 325 | } |
| 326 | |
| 327 | async stop(): Promise<void> { |
| 328 | return new Promise((resolve) => { |
nothing calls this directly
no test coverage detected