UNPKG

apiver

Version:

Advanced API Versioning Without Duplication - Git-like CLI tool for managing multiple API versions in a single codebase

100 lines (75 loc) โ€ข 2.61 kB
# APIver - Git-like API Versioning Manage multiple API versions in a single codebase without duplication. Store changes as encrypted patches and serve versions from memory for zero-latency production performance. ## ๐Ÿš€ Features - **Git-like Workflow** โ€“ Edit files directly in project root - **Memory Serving** โ€“ Zero-latency version loading - **Encrypted Storage** โ€“ Secure patch and snapshot storage - **Express Integration** โ€“ 2-line setup with middleware - **Array Loading** โ€“ Load multiple versions simultaneously - **Controller Support** โ€“ Works with functions and routers ## ๐Ÿ“ฆ Installation ```bash npm install apiver ``` ## โšก Quick Start ### 1. Initialize & Create Versions ```bash npx apiver init v1 # Edit your API files npx apiver commit -m "Initial v1" npx apiver new v2 from v1 # Edit files for v2 npx apiver commit -m "Enhanced v2" ``` ### 2. Express Integration (2 lines) ```javascript const { loadVersion, versionMiddleware } = require('apiver'); loadVersion(['v1', 'v2']); // Load into memory app.use('/api/:version', versionMiddleware(['v1', 'v2'])); // Serve ``` ### 3. API Endpoints - `GET /api/v1/users` โ†’ v1 response - `GET /api/v2/users` โ†’ v2 response ## ๐Ÿ›  CLI Commands ```bash npx apiver init v1 # Initialize npx apiver new v2 from v1 # Create version npx apiver switch v2 # Switch version npx apiver commit -m "msg" # Commit changes npx apiver list # Show versions npx apiver diff v1 v2 # Compare npx apiver hotfix v1 file.js # Apply hotfix npx apiver delete v1 # Delete version ``` ## ๐Ÿ— Architecture ``` project/ โ”œโ”€โ”€ routes/users.js # Your API files (edit directly) โ”œโ”€โ”€ controllers/ # Your controllers โ”œโ”€โ”€ .apiver/ โ”‚ โ”œโ”€โ”€ snapshots/ # Encrypted full versions โ”‚ โ”œโ”€โ”€ patches/ # Incremental changes โ”‚ โ””โ”€โ”€ meta.json # Version metadata โ””โ”€โ”€ package.json ``` ## ๐ŸŽฏ Advanced Usage ### Controller Functions ```javascript const userController = (req, res) => { const handler = req.versionedCode['routes/users.js']; handler.get(req, res); }; app.use('/user/:version', versionMiddleware(['v1', 'v2'], userController)); ``` ### Express Routers ```javascript const router = express.Router(); // Define routes... app.use('/api/:version', versionMiddleware(['v1', 'v2'], router)); ``` ## ๐Ÿงช Testing ```bash npm test # 84/84 tests passing (100% coverage) ``` ## ๐Ÿ“œ License MIT License