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
Markdown
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.
- **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
```bash
npm install apiver
```
```bash
npx apiver init v1
npx apiver commit -m "Initial v1"
npx apiver new v2 from v1
npx apiver commit -m "Enhanced v2"
```
```javascript
const { loadVersion, versionMiddleware } = require('apiver');
loadVersion(['v1', 'v2']); // Load into memory
app.use('/api/:version', versionMiddleware(['v1', 'v2'])); // Serve
```
- `GET /api/v1/users` โ v1 response
- `GET /api/v2/users` โ v2 response
```bash
npx apiver init v1
npx apiver new v2 from v1
npx apiver switch v2
npx apiver commit -m "msg"
npx apiver list
npx apiver diff v1 v2
npx apiver hotfix v1 file.js
npx apiver delete v1
```
```
project/
โโโ routes/users.js
โโโ controllers/
โโโ .apiver/
โ โโโ snapshots/
โ โโโ patches/
โ โโโ meta.json
โโโ package.json
```
```javascript
const userController = (req, res) => {
const handler = req.versionedCode['routes/users.js'];
handler.get(req, res);
};
app.use('/user/:version', versionMiddleware(['v1', 'v2'], userController));
```
```javascript
const router = express.Router();
// Define routes...
app.use('/api/:version', versionMiddleware(['v1', 'v2'], router));
```
```bash
npm test
```
MIT License