@yaagoub/decorators
Version:
Angular decorators
21 lines • 4.33 kB
JavaScript
function formatUrlPath({ baseUrl, path, paths }) {
let url = (baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl) + (path.startsWith('/') ? path : `/${path}`);
Object.keys(paths).forEach(key => {
url = url.replace(new RegExp(`{${key}}`, 'g'), encodeURIComponent(paths[key]));
});
return url;
}
function formatUrlQuery({ url, queries }) {
const queryString = Object.keys(queries)
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(queries[key])}`)
.join('&');
return queryString ? `${url}${url.includes('?') ? '&' : '?'}${queryString}` : url;
}
export function formatUrl({ baseUrl, path, queries, paths }) {
let url = formatUrlPath({ baseUrl, path, paths });
if (queries && Object.keys(queries).length > 0) {
url = formatUrlQuery({ url, queries });
}
return url;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVjb3JhdG9ycy9zcmMvaHR0cC9oZWxwZXJzL2Zvcm1hdC11cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFJNUM7SUFDQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEgsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDL0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUdyQztJQUNDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3JDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFYixPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNwRixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFNdEQ7SUFFRCxJQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFbEQsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0MsR0FBRyxHQUFHLGNBQWMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBmb3JtYXRVcmxQYXRoKHsgYmFzZVVybCwgcGF0aCwgcGF0aHMgfToge1xuICBiYXNlVXJsOiBzdHJpbmcsXG4gIHBhdGg6IHN0cmluZyxcbiAgcGF0aHM6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbn0pIHtcbiAgbGV0IHVybCA9IChiYXNlVXJsLmVuZHNXaXRoKCcvJykgPyBiYXNlVXJsLnNsaWNlKDAsIC0xKSA6IGJhc2VVcmwpICsgKHBhdGguc3RhcnRzV2l0aCgnLycpID8gcGF0aCA6IGAvJHtwYXRofWApO1xuICBPYmplY3Qua2V5cyhwYXRocykuZm9yRWFjaChrZXkgPT4ge1xuICAgIHVybCA9IHVybC5yZXBsYWNlKG5ldyBSZWdFeHAoYHske2tleX19YCwgJ2cnKSwgZW5jb2RlVVJJQ29tcG9uZW50KHBhdGhzW2tleV0pKTtcbiAgfSk7XG4gIHJldHVybiB1cmw7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVybFF1ZXJ5KHsgdXJsLCBxdWVyaWVzIH06IHtcbiAgdXJsOiBzdHJpbmcsXG4gIHF1ZXJpZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbn0pIHtcbiAgY29uc3QgcXVlcnlTdHJpbmcgPSBPYmplY3Qua2V5cyhxdWVyaWVzKVxuICAgIC5tYXAoa2V5ID0+IGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChxdWVyaWVzW2tleV0pfWApXG4gICAgLmpvaW4oJyYnKTtcblxuICByZXR1cm4gcXVlcnlTdHJpbmcgPyBgJHt1cmx9JHt1cmwuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/J30ke3F1ZXJ5U3RyaW5nfWAgOiB1cmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRVcmwoeyBiYXNlVXJsLCBwYXRoLCBxdWVyaWVzLCBwYXRocyB9OlxuICB7XG4gICAgYmFzZVVybDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyAsXG4gICAgcXVlcmllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICBwYXRoczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICB9XG4pOiBzdHJpbmcge1xuICBsZXQgdXJsID0gZm9ybWF0VXJsUGF0aCh7IGJhc2VVcmwsIHBhdGgsIHBhdGhzIH0pO1xuXG4gIGlmIChxdWVyaWVzICYmIE9iamVjdC5rZXlzKHF1ZXJpZXMpLmxlbmd0aCA+IDApIHtcbiAgICB1cmwgPSBmb3JtYXRVcmxRdWVyeSh7IHVybCwgcXVlcmllcyB9KTtcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59XG4iXX0=