"use strict";
/*
 * co-componse
 *
 * (c) Harminder Virk <virk@adonisjs.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.Middleware = void 0;
const Runnable_1 = require("./Runnable");
/**
 * Exposes the API to register middleware and later execute
 * them using the runner.
 */
class Middleware {
    constructor() {
        this.list = [];
    }
    /**
     * Register an array of middleware to executed
     * later.
     */
    register(list) {
        if (!Array.isArray(list)) {
            throw new Error('middleware.register expects an array of middleware');
        }
        this.list = this.list.concat(list);
        return this;
    }
    /**
     * Returns an instance of runner to execute
     * the middleware
     */
    runner() {
        return new Runnable_1.Runnable(this.list);
    }
}
exports.Middleware = Middleware;
