UNPKG

master

Version:

Master is a node web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern

235 lines (181 loc) 7.1 kB
# Changelog - MasterController Template Updates ## [2.0.0] - 2025-01-11 ### 🚀 Major Features #### Middleware Pipeline System - **NEW:** ASP.NET Core-style middleware pipeline - **NEW:** `master.pipeline.use()` - Add pass-through middleware - **NEW:** `master.pipeline.run()` - Add terminal middleware - **NEW:** `master.pipeline.map()` - Conditional path-based middleware - **NEW:** `master.pipeline.useError()` - Error handling middleware - **NEW:** `master.pipeline.discoverMiddleware()` - Auto-discover middleware from folders #### Auto-Discovery - **NEW:** Middleware files in `middleware/` directory are automatically loaded - **NEW:** Alphabetical loading order (use `01-`, `02-` prefixes) - **NEW:** Two patterns supported: function export or `{ register: (master) => {} }` #### Simplified Setup - **REMOVED:** `master.addInternalTools()` - no longer needed! - **IMPROVED:** Internal tools are now auto-loaded in `setupServer()` - **IMPROVED:** Cleaner, simpler server.js ### 🐛 Bug Fixes #### Route Parameter Casing - **FIXED:** Route parameters now preserve casing - **BEFORE:** `/period/:periodId` became `:periodid` (all lowercase) - **AFTER:** `/period/:periodId` stays as `:periodId` (camelCase preserved) - **IMPACT:** No more `obj.params.periodid` - now correctly `obj.params.periodId` ### 📝 Template Updates #### server.js - Removed `master.addInternalTools()` call - Simplified to 3-line setup - Better comments and examples - Auto-loads internal tools #### config/initializers/config.js - **NEW:** Middleware registration section - **NEW:** `master.pipeline.discoverMiddleware()` call - **IMPROVED:** Organized into 5 clear sections - **IMPROVED:** Better comments for DI examples - **NEW:** Optional security middleware examples #### config/routes.js - **NEW:** Examples showing parameter casing preservation - **NEW:** RESTful resources documentation - **NEW:** Route constraints examples - **NEW:** API route examples - **IMPROVED:** Better organization with sections #### app/controllers/homeController.js - **NEW:** Constructor now receives `requestObject` parameter - **NEW:** Before/After action filter examples - **NEW:** Complete request data access examples - **NEW:** DI service access examples - **NEW:** Multiple action examples (show, create, api) - **IMPROVED:** Modern async/await patterns #### middleware/ Directory (NEW) - **NEW:** `01-logger.js` - Request logging example - **NEW:** `02-api-auth.js.example` - API authentication example - **NEW:** `03-admin-auth.js.example` - Admin protection example - **NEW:** `README.md` - Complete middleware documentation ### 📚 Documentation #### QUICKSTART.md (NEW) - Complete quickstart guide - Step-by-step setup instructions - Examples for all major features - Common patterns and use cases #### CHANGELOG.md (NEW) - This file - documents all changes #### README.md Updates - **NEW:** Complete middleware pipeline documentation - **NEW:** View pattern hooks section (`master.extendView()`) - **NEW:** Routing API with parameter casing examples - **NEW:** Controller API with all methods - **NEW:** DI lifetimes (Singleton, Scoped, Transient) - **NEW:** Security features documentation - **NEW:** Components documentation - **NEW:** Complete API reference section ### 🔒 Security #### Auto-Registration - CORS now auto-registers with pipeline when `init()` is called - Sessions now auto-register with pipeline when `init()` is called - Security middleware can be easily added to pipeline #### Pipeline Integration - Security headers middleware available - Rate limiting middleware available - CSRF protection middleware available - All security features work with new pipeline ### 🔄 Breaking Changes **None!** All changes are backwards compatible. - Existing code using old patterns continues to work - `master.addInternalTools()` is optional (but not needed) - All existing APIs remain functional ### ⚡ Performance - **IMPROVED:** Middleware execution is async/await based - **IMPROVED:** Request/response flow more efficient - **IMPROVED:** Error handling more robust ### 🎯 Migration Guide #### From v1.x to v2.0 **Step 1:** Update server.js ```javascript // Before master.addInternalTools([...]); // After // Remove this line - tools are auto-loaded! ``` **Step 2:** Update config/initializers/config.js ```javascript // Add middleware discovery (optional) master.pipeline.discoverMiddleware('middleware'); ``` **Step 3:** Create middleware/ directory (optional) ```bash mkdir middleware # Add custom middleware files ``` **Step 4:** Update route parameter access (if needed) ```javascript // Before const periodid = obj.params.periodid; // lowercase // After const periodId = obj.params.periodId; // camelCase preserved! ``` **That's it!** Everything else continues to work. ### 📦 Component Templates #### component/config/initializers/config.js - **IMPROVED:** Updated with component-specific patterns - **NEW:** Middleware registration examples - **NEW:** DI registration examples #### component/config/routes.js - **IMPROVED:** Better examples and documentation - **NEW:** Parameter casing examples #### component/app/controllers/homeController.js - **IMPROVED:** Modern patterns - **NEW:** Constructor with requestObject - **NEW:** DI access examples ### 🛠️ Templates #### templates/controller.js - **COMPLETE REWRITE:** Modern RESTful controller template - **NEW:** Before/After action filters - **NEW:** All 7 RESTful actions with examples - **NEW:** Request data access documentation - **NEW:** DI service access documentation - **NEW:** Comprehensive inline documentation ### 🎨 Examples All example files now include: - Inline documentation - Use case explanations - Parameter casing examples - DI usage examples - Error handling patterns ### 🔗 Integration The new middleware system integrates seamlessly with: - ✅ CORS (auto-registers) - ✅ Sessions (auto-registers) - ✅ Security middleware (manual registration) - ✅ Static file serving (automatic) - ✅ Body parsing (automatic) - ✅ Routing (automatic) - ✅ Error handling (automatic) ### 📋 Files Changed **Modified:** - `master/server.js` - `master/config/initializers/config.js` - `master/config/routes.js` - `master/app/controllers/homeController.js` - `component/config/initializers/config.js` - `component/config/routes.js` - `component/app/controllers/homeController.js` - `templates/controller.js` **Created:** - `master/middleware/` directory - `master/middleware/01-logger.js` - `master/middleware/02-api-auth.js.example` - `master/middleware/03-admin-auth.js.example` - `master/middleware/README.md` - `master/QUICKSTART.md` - `master/CHANGELOG.md` ### 🙏 Credits - Inspired by ASP.NET Core middleware pipeline - Follows Express.js middleware patterns - Preserves MasterController simplicity ### 📞 Support For questions or issues with the new templates: - GitHub Issues: https://github.com/alexanderrich/mastercontroller/issues - Documentation: README.md, QUICKSTART.md, middleware/README.md --- **Thank you for using MasterController!** 🚀