UNPKG

africastalking-ts

Version:

Unofficial Typescript version of the Africa's Talking SDK

57 lines (47 loc) 1.74 kB
import { Schema } from 'joi'; import chalk from 'chalk'; import axios from 'axios'; import { SendRequestOptions } from './misc.types'; import { getUrl } from './getUrl'; export const validateJoiSchema = <T>(schema: Schema, data: any): T => { const { error, value } = schema.validate(data); if (error) { const combinedMessages = error.details.map((d) => d.message).join(';'); throw new Error(combinedMessages); } return value; }; export const sendRequest = <Response, PostData = null, Params = any>( opts: SendRequestOptions<PostData, Params>, ): Promise<Response> => { const { endpointCategory, username, method, data = null, headers, params, } = opts; return axios({ url: getUrl(endpointCategory, username), method, data, headers, params, }).then((value) => { if (![200, 201].includes(value.status)) { return Promise.reject(value.data); } return Promise.resolve(value.data); }); }; export const showDeprecationWarning = ( oldFunctionName: string, newFunctionName: string | undefined, releaseType: 'minor' | 'major' = 'major', link: string = 'https://github.com/tawn33y/africastalking-ts/blob/main/README.md#note-this-is-a-breaking-version', ): void => { const header = '\nDeprecation warning:'; let msg = `\n ${chalk.bold(oldFunctionName)} is being deprecated and will be removed in upcoming ${chalk.bold(releaseType)} release.`; msg += newFunctionName ? (`\n Please use ${chalk.bold(newFunctionName)}instead.`) : ''; msg += `\n For more information, please refer to ${chalk.underline(link)}.`; // eslint-disable-next-line no-console console.warn(`${chalk.bold.bgHex('#D15E00')(header)}${chalk.keyword('orange')(msg)}`); };