UNPKG

@xtsai/xai-utils

Version:

The xai-utils is an openai nodejs sdk compatible extension library.

82 lines 2.53 kB
export function buildSDKApiUrl(baseUrl, sdkPath, queryParams) { const apiPath = sdkPath.toString().startsWith('/') ? sdkPath.toString().slice(1) : sdkPath.toString(); let url = baseUrl.endsWith('/') ? `${baseUrl}${apiPath}` : `${baseUrl}/${apiPath}`; if (queryParams && Object.keys(queryParams).length) { const params = []; Object.keys(queryParams).forEach((k) => { params.push(`${k}=${queryParams[k]?.toString ? queryParams[k].toString() : queryParams[k]}`); }); const hasQuery = url.indexOf('?') > 0; url = hasQuery ? `${url}&${params.join('&')}` : `${url}?${params.join('&')}`; } return url; } /** * pick * @param url * @param query * @returns */ export function getQueryParams(url = '', query) { if (!url?.length || url.indexOf('?') < 0) return; const queryStr = url.slice(url.indexOf('?') + 1); const arr = queryStr.split('&'); const queryParams = {}; arr.forEach((item) => { const [name, value] = item.split('='); if (typeof name === 'string' && value !== undefined) { if (queryParams[name] !== undefined) { if (Array.isArray(queryParams[name])) { queryParams[name].push(value); } else { queryParams[name] = [queryParams[name], value]; } } } }); if (!Object.keys(queryParams).length) return; return query?.length ? queryParams[query] : queryParams; } /** * url like : tsai.com/api?code=1&name=&has=true * replace query param or pending * not support url has href like: xxx?a=1&b=4#some * @param url * @param name * @param value * @returns url */ export function setQueryParam(url = '', name, value = '') { if (!name?.length) return url; if (url?.indexOf('?') < 0) return `${url}?${name}=${value.toString()}`; const base = url.slice(0, url.indexOf('?')); let queryParams = getQueryParams(url); if (!queryParams) { queryParams = { [name]: value.toString(), }; } else { queryParams[name] = value.toString(); } const searchStr = Object.keys(queryParams) .reduce((prev, curr) => { const paramStr = `${curr}=${queryParams[curr]}`; prev.push(paramStr); return prev; }, []) .join('&'); return `${base}?${searchStr}`; } //# sourceMappingURL=url.utils.js.map