[READ-ONLY] a fast, modern browser for the npm registry
at main 26 lines 728 B view raw
1import * as v from 'valibot' 2import { SearchQuerySchema } from '#shared/schemas/package' 3import { NPM_REGISTRY } from '#shared/utils/constants' 4 5export default defineEventHandler(async event => { 6 const query = getQuery(event) 7 8 try { 9 const q = v.parse(SearchQuerySchema, query.q) 10 11 if (!q) { 12 return [q, []] 13 } 14 15 const params = new URLSearchParams({ text: q, size: '10' }) 16 const response = await $fetch<NpmSearchResponse>(`${NPM_REGISTRY}/-/v1/search?${params}`) 17 18 const suggestions = response.objects.map(obj => obj.package.name) 19 return [q, suggestions] 20 } catch (error: unknown) { 21 handleApiError(error, { 22 statusCode: 502, 23 message: ERROR_SUGGESTIONS_FETCH_FAILED, 24 }) 25 } 26})