UNPKG

@verdaccio/server-fastify

Version:

fastify server api implementation

69 lines (61 loc) 1.93 kB
import buildDebug from 'debug'; import { FastifyInstance } from 'fastify'; import { stringUtils } from '@verdaccio/core'; import { Storage } from '@verdaccio/store'; import { Package, Version } from '@verdaccio/types'; const debug = buildDebug('verdaccio:fastify:api:sidebar'); export type $SidebarPackage = Package & { latest: Version }; interface ParamsInterface { name: string; version: string; } async function manifestRoute(fastify: FastifyInstance) { fastify.get<{ Params: ParamsInterface }>('/:name', async (request) => { const { name } = request.params; const storage = fastify.storage; debug('pkg name %s ', name); // @ts-ignore const abbreviated = stringUtils.getByQualityPriorityValue(request.headers['accept']) === Storage.ABBREVIATED_HEADER; const data = await storage?.getPackageByOptions({ name, // @ts-ignore uplinksLook: true, requestOptions: { protocol: request.protocol, headers: request.headers as any, host: request.hostname, }, abbreviated, }); return data; }); interface QueryInterface { write: string; } fastify.get<{ Params: ParamsInterface; Querystring: QueryInterface }>( '/:packageName/:version', async (request) => { const { name, version } = request.params; const storage = fastify.storage; const write = request.query.write === 'true'; debug('pkg name %s, with version / tag: %s ', name, version); const requestOptions = { protocol: request.protocol, headers: request.headers as any, host: request.hostname, remoteAddress: request.socket.remoteAddress, byPassCache: write, }; const data = await storage?.getPackageByOptions({ name, version, uplinksLook: true, requestOptions, }); return data; } ); } export default manifestRoute;