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.
}
routePath[kPathMethods] = {};
+
+ Object.defineProperty(routePath, 'path', {
+ enumerable: false,
+ value: rawPath,
+ });
+
Object.freeze(routePath);
return routePath;
}
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();
}