UNPKG

badge-urls

Version:

Helper functions to generate URLs for all badges / shields from shields.io

47 lines (46 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var replaceAll_1 = tslib_1.__importDefault(require("../../utils/replaceAll")); var firstAvailableSafeName_1 = tslib_1.__importDefault(require("../../utils/firstAvailableSafeName")); var case_1 = require("../../utils/case"); var OPTIONS_IMPORT_PREFIX = 'import { ShieldsIOOptions, urlWithOptions } from "../../options";\n'; function generateShieldFunction(url) { var pathVariables = []; var _a = url.split("?"), urlPath = _a[0], urlQuery = _a[1]; var urlPathTemplate = urlPath .split("/") .map(function (part) { if (part.startsWith(":")) { var pathVariable = firstAvailableSafeName_1.default(case_1.camelCase(part.substring(1)), pathVariables); return "${" + pathVariable + "}"; } else { return part; } }) .join("/"); var urlTemplate = urlQuery ? urlPathTemplate + "?" + urlQuery : urlPathTemplate; var code = "(" + pathVariables .map(function (pathVariable) { return pathVariable + ": string"; }) .concat(["options?: ShieldsIOOptions"]) .join(", ") + ") => urlWithOptions(`" + urlTemplate + "`, options)"; return code; } function generateShieldModule(label, url) { var escapedLabel = replaceAll_1.default(label, "`", "`"); var labelDocstring = "/** Label for " + label + " (" + url + ") */"; var labelLine = "export const label = `" + escapedLabel + "`;"; var urlDocstring = "/** URL for " + label + " (" + url + ") */"; var functionLine = "export const url = " + generateShieldFunction(url) + ";"; return [ OPTIONS_IMPORT_PREFIX, labelDocstring, labelLine, urlDocstring, functionLine, ].join("\n"); } exports.default = generateShieldModule;