UNPKG

@verdaccio/server-fastify

Version:

fastify server api implementation

38 lines (31 loc) 1.02 kB
/* eslint-disable no-console */ /* eslint-disable no-invalid-this */ import { FastifyInstance } from 'fastify'; import { searchUtils } from '@verdaccio/core'; import { logger } from '@verdaccio/logger'; interface QueryInterface { url: string; query: searchUtils.SearchQuery; } async function searchRoute(fastify: FastifyInstance) { fastify.get<{ Querystring: QueryInterface }>('/-/v1/search', async (request, reply) => { // TODO: apply security layer here like in // packages/api/src/v1/search.ts // TODO: add validations for query, some parameters are mandatory // TODO: review which query fields are mandatory const abort = new AbortController(); request.socket.on('aborted', () => { abort.abort(); }); const { url, query } = request.query; const storage = fastify.storage; const data = await storage.search({ query, url, abort, }); logger.http('search endpoint'); reply.code(200).send(data); }); } export default searchRoute;