in src/yaral.ts [219:256]
function resolveRouteOpts(
req: Request,
): {
enabled: boolean;
buckets: string[];
exclude: (req: Request) => boolean;
} {
const routeOpts = req.route.settings.plugins.yaral;
const opts = {
enabled: true,
buckets: <string[]>[],
exclude: (_req: Request) => false,
};
if (!routeOpts) {
// do nothing
} else if (typeof routeOpts === 'string') {
// specifying bucket as string
opts.buckets = [routeOpts];
} else if (Array.isArray(routeOpts)) {
// specifying array of buckets
opts.buckets = routeOpts;
} else {
// providing a literal object
Object.assign(opts, routeOpts);
if (typeof opts.buckets === 'string') {
opts.buckets = [opts.buckets];
}
}
if (opts.enabled) {
opts.buckets = opts.buckets.concat(options.default);
opts.enabled =
!(options.exclude(req) || opts.exclude(req)) &&
opts.buckets.length + options.default.length > 0;
}
return opts;
}