badge-urls
Version:
Helper functions to generate URLs for all badges / shields from shields.io
64 lines (63 loc) • 2.35 kB
JavaScript
import createUrl from "../utils/createUrl";
export var ShieldsIOShieldStyle;
(function (ShieldsIOShieldStyle) {
ShieldsIOShieldStyle["Plastic"] = "plastic";
ShieldsIOShieldStyle["Flat"] = "flat";
ShieldsIOShieldStyle["FlatSquare"] = "flat-square";
ShieldsIOShieldStyle["ForTheBadge"] = "for-the-badge";
ShieldsIOShieldStyle["Social"] = "social";
})(ShieldsIOShieldStyle || (ShieldsIOShieldStyle = {}));
export var ShieldsIOColor;
(function (ShieldsIOColor) {
ShieldsIOColor["BrightGreen"] = "brightgreen";
ShieldsIOColor["Green"] = "green";
ShieldsIOColor["YellowGreen"] = "yellowgreen";
ShieldsIOColor["Yellow"] = "yellow";
ShieldsIOColor["Orange"] = "orange";
ShieldsIOColor["Red"] = "red";
ShieldsIOColor["Blue"] = "blue";
ShieldsIOColor["LightGrey"] = "lightgrey";
ShieldsIOColor["Success"] = "success";
ShieldsIOColor["Important"] = "important";
ShieldsIOColor["Critical"] = "critical";
ShieldsIOColor["Informational"] = "informational";
ShieldsIOColor["Inactive"] = "inactive";
ShieldsIOColor["BlueViolet"] = "blueviolet";
})(ShieldsIOColor || (ShieldsIOColor = {}));
const SHIELDS_IO_BASE_URL = "https://img.shields.io";
export const urlWithOptions = (urlOrPath, options = {}) => {
const { baseUrl = SHIELDS_IO_BASE_URL, style, label, logo, logoColor, logoWidth, link, cacheSeconds, } = options;
const url = createUrl(urlOrPath, baseUrl);
if (style) {
url.searchParams.set("style", style);
}
if (label) {
url.searchParams.set("label", label);
}
if (logo) {
url.searchParams.set("logo", logo);
}
if (logoColor) {
url.searchParams.set("logoColor", logoColor);
}
if (logoWidth) {
url.searchParams.set("logoWidth", logoWidth.toString());
}
if (link) {
if (typeof link === "string") {
url.searchParams.set("link", link);
}
else if (Array.isArray(link)) {
url.searchParams.set("link", link[0]);
url.searchParams.append("link", link[1]);
}
else {
url.searchParams.set("link", link.left);
url.searchParams.append("link", link.right);
}
}
if (cacheSeconds) {
url.searchParams.set("cacheSeconds", cacheSeconds.toString());
}
return url.toString();
};