nextjs-middleware-stack
Version:
Composable route-based middleware for Next.js Middleware.
32 lines • 1.65 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.middlewareStack = middlewareStack;
const compare_path_1 = require("compare-path");
function middlewareStack(routes) {
return (req) => __awaiter(this, void 0, void 0, function* () {
var _a, _b;
const url = (_b = (_a = req.nextUrl) === null || _a === void 0 ? void 0 : _a.pathname) !== null && _b !== void 0 ? _b : req.url;
for (const [pattern, handler] of routes) {
const isMatch = typeof pattern === 'string'
? (0, compare_path_1.comparePath)(pattern, url)
: pattern instanceof RegExp
? pattern.test(url)
: false;
if (isMatch) {
const result = yield handler(req);
if (result)
return result; // short-circuit if a handler returns a response
}
}
});
}
//# sourceMappingURL=main.js.map