mirror of
https://github.com/arthur-pbty/portfolio2023.git
synced 2026-06-06 14:20:42 +02:00
139 lines
4.5 KiB
TypeScript
139 lines
4.5 KiB
TypeScript
/**
|
|
* @adonisjs/http-server
|
|
*
|
|
* (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.
|
|
*/
|
|
/// <reference path="../../adonis-typings/index.d.ts" />
|
|
import { Macroable } from 'macroable';
|
|
import { RouteJSON, RouteContract, RouteHandler, RouteMatchersNode, RouteParamMatcher, RouteMiddlewareHandler } from '@ioc:Adonis/Core/Route';
|
|
/**
|
|
* Route class is used to construct consistent [[RouteDefinition]] using
|
|
* fluent API. An instance of route is usually obtained using the
|
|
* [[Router]] class helper methods.
|
|
*
|
|
* @example
|
|
* ```ts
|
|
* const route = new Route('posts/:id', ['GET'], async function () {
|
|
* })
|
|
*
|
|
* route
|
|
* .where('id', /^[0-9]+$/)
|
|
* .middleware(async function () {
|
|
* })
|
|
* ```
|
|
*/
|
|
export declare class Route extends Macroable implements RouteContract {
|
|
private pattern;
|
|
private methods;
|
|
private handler;
|
|
private globalMatchers;
|
|
protected static macros: {};
|
|
protected static getters: {};
|
|
/**
|
|
* By default the route is part of `root` domain. Root
|
|
* domain is used when no domain is defined
|
|
*/
|
|
private routeDomain;
|
|
/**
|
|
* An object of matchers to be forwarded to the
|
|
* store. The matchers list is populated by
|
|
* calling `where` method
|
|
*/
|
|
private matchers;
|
|
/**
|
|
* Custom prefixes. Usually added to a group of routes. We keep an array of them
|
|
* since nested groups will want all of them ot concat.
|
|
*/
|
|
private prefixes;
|
|
/**
|
|
* An array of middleware. Added using `middleware` function
|
|
*/
|
|
private routeMiddleware;
|
|
/**
|
|
* Storing the namespace explicitly set using `route.namespace` method
|
|
*/
|
|
private routeNamespace;
|
|
/**
|
|
* A boolean to prevent route from getting registered within
|
|
* the [[Store]].
|
|
*
|
|
* This flag must be set before [[Router.commit]] method
|
|
*/
|
|
deleted: boolean;
|
|
/**
|
|
* A unique name to lookup the route
|
|
*/
|
|
name: string;
|
|
constructor(pattern: string, methods: string[], handler: RouteHandler, globalMatchers: RouteMatchersNode);
|
|
/**
|
|
* Returns an object of param matchers by merging global and local
|
|
* matchers. The local copy is given preference over the global
|
|
* one's
|
|
*/
|
|
private getMatchers;
|
|
/**
|
|
* Returns a normalized pattern string by prefixing the `prefix` (if defined).
|
|
*/
|
|
private computePattern;
|
|
/**
|
|
* Define Regex matcher for a given param. If a matcher exists, then we do not
|
|
* override that, since the routes inside a group will set matchers before
|
|
* the group, so they should have priority over the route matchers.
|
|
*
|
|
* ```
|
|
* Route.group(() => {
|
|
* Route.get('/:id', 'handler').where('id', /^[0-9]$/)
|
|
* }).where('id', /[^a-z$]/)
|
|
* ```
|
|
*
|
|
* The `/^[0-9]$/` should win over the matcher defined by the group
|
|
*/
|
|
where(param: string, matcher: RouteParamMatcher): this;
|
|
/**
|
|
* Define prefix for the route. Prefixes will be concated
|
|
* This method is mainly exposed for the [[RouteGroup]]
|
|
*/
|
|
prefix(prefix: string): this;
|
|
/**
|
|
* Define a custom domain for the route. Again we do not overwrite the domain
|
|
* unless `overwrite` flag is set to true.
|
|
*
|
|
* This is again done to make route.domain win over route.group.domain
|
|
*/
|
|
domain(domain: string, overwrite?: boolean): this;
|
|
/**
|
|
* Define an array of middleware to be executed on the route. If `prepend`
|
|
* is true, then middleware will be added to start of the existing
|
|
* middleware. The option is exposed for [[RouteGroup]]
|
|
*/
|
|
middleware(middleware: RouteMiddlewareHandler | RouteMiddlewareHandler[], prepend?: boolean): this;
|
|
/**
|
|
* Give memorizable name to the route. This is helpful, when you
|
|
* want to lookup route defination by it's name.
|
|
*
|
|
* If `prepend` is true, then it will keep on prepending to the existing
|
|
* name. This option is exposed for [[RouteGroup]]
|
|
*/
|
|
as(name: string, prepend?: boolean): this;
|
|
/**
|
|
* Define controller namespace for a given route
|
|
*/
|
|
namespace(namespace: string, overwrite?: boolean): this;
|
|
/**
|
|
* Get the route pattern
|
|
*/
|
|
getPattern(): string;
|
|
/**
|
|
* Set the route pattern
|
|
*/
|
|
setPattern(pattern: string): this;
|
|
/**
|
|
* Returns [[RouteDefinition]] that can be passed to the [[Store]] for
|
|
* registering the route
|
|
*/
|
|
toJSON(): RouteJSON;
|
|
}
|