UNPKG

datadirect

Version:
31 lines (30 loc) 1 kB
export function preparePath(path, pathParams) { let actual = path.toString(); for (const p in pathParams) { actual = actual.replace(new RegExp(`(:${p})([^a-z_0-9].*)?$`, 'gi'), '' + pathParams[p] + '$2'); } const match = Array.from(actual.matchAll(/:([a-z_0-9]+)/g)).map((group) => group[1]); if (match.length) { throw new Error(`No values passed for path parameter${match.length > 1 ? 's' : ''} ${match.join(', ')}`); } return actual; } export function prepare(req) { const { path, base, method = 'GET', payload, pageSize } = req; const input = new URL(path, base); let body = undefined; switch (method) { case 'GET': for (const prop in payload) { input.searchParams.append(prop, payload[prop]?.toString() || ''); } break; case 'POST': body = JSON.stringify(payload); } return { input, init: { method, body }, pageSize }; }