From c25daba1c13d7e3e32ca56c1ca72afd8f0f28be1 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Tue, 2 Dec 2025 21:03:57 +0000 Subject: [PATCH] fix(classes.typedserver): Instantiate and register DevToolsController only when injectReload is enabled; compile ControllerRegistry routes after registration --- changelog.md | 6 ++++++ ts/00_commitinfo_data.ts | 2 +- ts/classes.typedserver.ts | 17 ++++++++++++----- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/changelog.md b/changelog.md index aaf6e29..0edc3cc 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## 2025-12-02 - 4.1.1 - fix(classes.typedserver) +Instantiate and register DevToolsController only when injectReload is enabled; compile ControllerRegistry routes after registration + +- DevToolsController is now created and registered only if options.injectReload is true to avoid unnecessary/invalid registrations when live reload is disabled. +- ControllerRegistry.compileRoutes() is invoked after registering controllers to precompile decorated routes for faster route matching. + ## 2025-12-02 - 4.1.0 - feat(TypedServer) Integrate SmartServe controller routing; add built-in routes controller and refactor TypedServer to use controllers and FileServer diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index f1b79cd..9fe9c89 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@api.global/typedserver', - version: '4.1.0', + version: '4.1.1', description: 'A TypeScript-based project for easy serving of static files with support for live reloading, compression, and typed requests.' } diff --git a/ts/classes.typedserver.ts b/ts/classes.typedserver.ts index beea564..c8e8ff8 100644 --- a/ts/classes.typedserver.ts +++ b/ts/classes.typedserver.ts @@ -206,10 +206,12 @@ export class TypedServer { } // Initialize decorated controllers - this.devToolsController = new DevToolsController({ - getLastReload: () => this.lastReload, - getEnded: () => this.ended, - }); + if (this.options.injectReload) { + this.devToolsController = new DevToolsController({ + getLastReload: () => this.lastReload, + getEnded: () => this.ended, + }); + } this.typedRequestController = new TypedRequestController(this.typedrouter); @@ -227,10 +229,15 @@ export class TypedServer { }); // Register controllers with SmartServe's ControllerRegistry - plugins.smartserve.ControllerRegistry.registerInstance(this.devToolsController); + if (this.options.injectReload) { + plugins.smartserve.ControllerRegistry.registerInstance(this.devToolsController); + } plugins.smartserve.ControllerRegistry.registerInstance(this.typedRequestController); plugins.smartserve.ControllerRegistry.registerInstance(this.builtInRoutesController); + // Compile routes for fast matching + plugins.smartserve.ControllerRegistry.compileRoutes(); + // Build SmartServe options const smartServeOptions: plugins.smartserve.ISmartServeOptions = { port,