@adonisjs-community/girouette
Version:
An AdonisJS package allowing decorators-based routing.
50 lines (49 loc) • 1.28 kB
JavaScript
import { REFLECT_GROUP_KEY } from '../constants.js';
import { REFLECT_GROUP_DOMAIN_KEY } from '../constants.js';
/**
* The Group decorator allows you to configure route groups with names and prefixes.
*
* @param options Configuration object for the group
*
* @example
* ```ts
* // Using name and prefix
* @Group({ name: 'admin', prefix: '/admin' })
* export default class AdminController {}
*
* // Using just a name
* @Group({ name: 'admin' })
* export default class AdminController {}
*
* // Using just a prefix
* @Group({ prefix: '/admin' })
* export default class AdminController {}
* ```
*/
export const Group = (options) => {
return (target) => {
Reflect.defineMetadata(REFLECT_GROUP_KEY, options, target);
};
};
/**
* The GroupDomain decorator allows you to restrict all routes within a controller
* to a specific domain.
*
* @param domain Domain to restrict routes to
*
* @example
* ```ts
* @GroupDomain('admin.example.com')
* export default class AdminController {
* @Get('/admin/dashboard')
* index() {
* // Only accessible via admin.example.com
* }
* }
* ```
*/
export const GroupDomain = (domain) => {
return (target) => {
Reflect.defineMetadata(REFLECT_GROUP_DOMAIN_KEY, domain, target);
};
};