Me topé con este fragmento de código mientras trabajaba en Fastify.
module.exports = async function (fastify, opts) { fastify.register(proxy, { upstream: 'https://news.ycombinator.com/', async preHandler(request, reply) { if (request.query.token !== 'abc') { throw fastify.httpErrors.unauthorized(); } }, }); }; Parece que llama a fastify.register con dos parámetros y el segundo parámetro es un objeto. El primer campo está upstream , pero no entiendo lo que sigue. ¿Cuál es esta sintaxis después de async preHandler(request, reply)... ?
fastify.register aparentemente tiene esta firma: fastify.register(proxy, {}); . Así que el segundo parámetro es un objeto .
Como se indica en MDN y por Andreas en los comentarios , puede tener un objeto que contenga una firma de método. Entonces su objeto puede ser declarado como:
{ upstream: string, preHandler(request, reply){} } Donde preHandler(request, reply){} es esencialmente una forma abreviada de preHandler: function(request, reply){}
Luego puede declarar la firma de este método asíncrono (nuevamente como se indica en docs ). Lo que resulta en:
{ async preHandler(request, reply){} }Lo anterior también podría declararse como:
{ preHandler: async function(request, reply){} }