Skip to content
← Public packages

@kentcdodds/sentry

Inspect Sentry organizations, projects, issues, and event summaries.

src/request.ts

26 lines · 864 B · TypeScript
import { type QueryInput, requireRecord, requireStringOrNumber, sentryRequest } from './client.ts'

type RequestInput = {
  path: string
  query?: QueryInput
  init?: RequestInit
}

/**
 * Call an arbitrary Sentry REST endpoint.
 *
 * @param params.path - API path starting with `/` (required).
 * @returns Parsed JSON response from Sentry.
 * @example
 * import sentryRequest from 'kody:@kentcdodds/sentry/request'
 * const teams = await sentryRequest({ path: '/organizations/kent-c-dodds-tech-llc/teams/' })
 * // => [{ slug: '...', name: '...' }]
 */
export default async function requestEntrypoint(params: unknown) {
  const input = requireRecord(params, 'request')
  requireStringOrNumber(input, 'path', 'request')
  return sentryRequest((input as RequestInput).path, {
    query: (input as RequestInput).query,
    init: (input as RequestInput).init,
  })
}