From bb64e719b71a048d1f8a03e9724a167cb8d6abb5 Mon Sep 17 00:00:00 2001
From: typicode 
Date: Sun, 25 Dec 2016 07:44:36 +0100
Subject: [PATCH 001/427] Update rewriter
---
 src/server/rewriter.js |  4 ++++
 test/server/plural.js  | 21 ++++++++++++++-------
 2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/src/server/rewriter.js b/src/server/rewriter.js
index e94ceb90e..d7f3c7471 100644
--- a/src/server/rewriter.js
+++ b/src/server/rewriter.js
@@ -7,6 +7,10 @@ function updateQueryString (target, sourceUrl) {
 module.exports = (routes) => {
   const router = express.Router()
 
+  router.get('/__rules', (req, res) => {
+    res.json(routes)
+  })
+
   Object.keys(routes).forEach((route) => {
     if (route.indexOf(':') !== -1) {
       router.all(route, (req, res, next) => {
diff --git a/test/server/plural.js b/test/server/plural.js
index 25103b67d..8a70ec8a4 100644
--- a/test/server/plural.js
+++ b/test/server/plural.js
@@ -7,6 +7,12 @@ describe('Server', () => {
   let server
   let router
   let db
+  const rewriterRules = {
+    '/api/': '/',
+    '/blog/posts/:id/show': '/posts/:id',
+    '/comments/special/:userId-:body': '/comments/?userId=:userId&body=:body',
+    '/firstpostwithcomments': '/posts/1?_embed=comments'
+  }
 
   beforeEach(() => {
     db = {}
@@ -75,13 +81,7 @@ describe('Server', () => {
     server = jsonServer.create()
     router = jsonServer.router(db)
     server.use(jsonServer.defaults())
-    server.use(jsonServer.rewriter({
-      '/api/': '/',
-      '/blog/posts/:id/show': '/posts/:id',
-      '/comments/special/:userId-:body': '/comments/?userId=:userId&body=:body',
-      '/firstpostwithcomments': '/posts/1?_embed=comments'
-
-    }))
+    server.use(jsonServer.rewriter(rewriterRules))
     server.use(router)
   })
 
@@ -703,6 +703,13 @@ describe('Server', () => {
         .expect([db.comments[4]])
         .end(done)
     })
+
+    it('should expose routes', (done) => {
+      request(server)
+        .get('/__rules')
+        .expect(rewriterRules)
+        .end(done)
+    })
   })
 
   describe('router.render', (done) => {
From ad9cbdd1ae4c68c1909c4d938285d1d3fc9d5d0d Mon Sep 17 00:00:00 2001
From: typicode 
Date: Sun, 25 Dec 2016 18:49:09 +0100
Subject: [PATCH 002/427] Add failing test
---
 test/server/plural.js | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/test/server/plural.js b/test/server/plural.js
index 8a70ec8a4..a144ca617 100644
--- a/test/server/plural.js
+++ b/test/server/plural.js
@@ -11,7 +11,8 @@ describe('Server', () => {
     '/api/': '/',
     '/blog/posts/:id/show': '/posts/:id',
     '/comments/special/:userId-:body': '/comments/?userId=:userId&body=:body',
-    '/firstpostwithcomments': '/posts/1?_embed=comments'
+    '/firstpostwithcomments': '/posts/1?_embed=comments',
+    '/articles?_id=:id': '/posts/:id'
   }
 
   beforeEach(() => {
@@ -704,6 +705,14 @@ describe('Server', () => {
         .end(done)
     })
 
+    // TODO
+    // it('should rewrite query params', (done) => {
+    //   request(server)
+    //     .get('/articles?_id=1')
+    //     .expect(db.posts[0])
+    //     .end(done)
+    // })
+
     it('should expose routes', (done) => {
       request(server)
         .get('/__rules')
From 69321be00fe85d026a88e7f30d464bd51afcee2f Mon Sep 17 00:00:00 2001
From: typicode 
Date: Sun, 25 Dec 2016 19:12:38 +0100
Subject: [PATCH 003/427] Display custom routes
---
 package.json                 |  2 +-
 src/server/public/index.html | 29 ++++++++++++++++++++++-------
 2 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/package.json b/package.json
index fa5c23b5f..6ef35be00 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
     "test": "npm run test:cli && npm run test:server && standard --fix",
     "test:cli": "npm run build && cross-env NODE_ENV=test mocha test/cli/*.js",
     "test:server": "cross-env NODE_ENV=test mocha test/server/*.js",
-    "start": "node bin",
+    "start": "babel-node src/cli/bin",
     "prepush": "npm t",
     "build": "babel src -d lib --copy-files",
     "toc": "markdown-toc -i README.md",
diff --git a/src/server/public/index.html b/src/server/public/index.html
index bdac2a7ad..83a644b90 100644
--- a/src/server/public/index.html
+++ b/src/server/public/index.html
@@ -27,7 +27,9 @@ Routes
         Here are the resources that JSON Server has loaded:
       
       
-      
+
+      
+
       
         You can view database current state at any time:
       
@@ -36,10 +38,10 @@ Routes
           db
         
       
-      
+
       
         You can use any HTTP verbs (GET, POST, PUT, PATCH and DELETE) and access your resources from anywhere
-        using CORS and JSONP.
+        using CORS or JSONP.
       
 
       Documentation
@@ -61,17 +63,30 @@ Issues
       
     
 
-
     
     
-    
+    
+