import Wreck from '@hapi/wreck' import { applyTraceHeaders } from '~/src/server/utils/utils.js' export type Method = keyof Pick export type RequestOptions = Parameters[0] export const request = async ( method: Method, url: string, options?: RequestOptions ) => { const headers = applyTraceHeaders(options?.headers) const mergedOptions = { ...options, headers } const { res, payload } = await Wreck[method](url, mergedOptions) if (!res.statusCode || res.statusCode < 200 || res.statusCode > 299) { return { res, error: payload || new Error('Unknown error') } } return { res, payload } } export const get = (url: string, options?: RequestOptions) => { return request('get', url, options) } export const getJson = (url: string) => { return get(url, { json: true }) } export const post = (url: string, options: RequestOptions) => { return request('post', url, options) } export const postJson = ( url: string, options: RequestOptions ) => { return post(url, { ...options, json: true }) } export const put = (url: string, options: RequestOptions) => { return request('put', url, options) }