bump package version to 2.0.0
[squeep-api-dingus] / lib / router / index.js
index f0d2d945a53909c327ab1661c54e83e9a6cfe097..fd19bdf5192cfd9efd7b4c00023f1ae92265cbd1 100644 (file)
@@ -7,7 +7,7 @@
 
 const { METHODS: httpMethods } = require('http');
 const common = require('../common');
-const { DingusError } = require('../errors');
+const { DingusError, RouterNoPathError, RouterNoMethodError } = require('../errors');
 const PathParameter = require('./path-parameter');
 
 // Internal identifiers for route entries.
@@ -69,6 +69,12 @@ class Router {
     }
 
     routePath[kPathMethods] = {};
+
+    Object.defineProperty(routePath, 'path', {
+      enumerable: false,
+      value: rawPath,
+    });
+
     Object.freeze(routePath);
     return routePath;
   }
@@ -253,17 +259,17 @@ class Router {
     const { matchedPath, pathParams } = this._pathFind(pathParts);
     ctx.params = pathParams;
     if (matchedPath) {
-      ctx.matchedPath = matchedPath;
+      ctx.matchedPath = matchedPath.path;
       if (method in matchedPath[kPathMethods]) {
         return matchedPath[kPathMethods][method];
       }
       if ('*' in matchedPath[kPathMethods]) {
         return matchedPath[kPathMethods]['*'];
       }
-      throw new DingusError('NoMethod');
+      throw new RouterNoMethodError();
     }
     ctx.unmatchedPath = pathParts;
-    throw new DingusError('NoPath');
+    throw new RouterNoPathError();
   }