forked from
npmx.dev/npmx.dev
[READ-ONLY]
a fast, modern browser for the npm registry
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})