diff --git a/badge-maker/lib/make-badge.js b/badge-maker/lib/make-badge.js
index 7119670d47ce0..fc87bd2bda1c8 100644
--- a/badge-maker/lib/make-badge.js
+++ b/badge-maker/lib/make-badge.js
@@ -4,6 +4,7 @@ const { normalizeColor, toSvgColor } = require('./color')
const badgeRenderers = require('./badge-renderers')
const { stripXmlWhitespace } = require('./xml')
const { DEFAULT_LOGO_HEIGHT } = require('./constants')
+const { getIconSize } = require('./svg-helpers.js')
/*
note: makeBadge() is fairly thinly wrapped so if we are making changes here
@@ -17,8 +18,8 @@ module.exports = function makeBadge({
color,
labelColor,
logo,
+ namedLogo,
logoSize,
- logoWidth,
links = ['', ''],
idSuffix,
}) {
@@ -26,12 +27,20 @@ module.exports = function makeBadge({
label = `${label}`.trim()
message = `${message}`.trim()
+ let logoWidth = logo ? DEFAULT_LOGO_HEIGHT : 0
+ if (namedLogo && logoSize === 'auto') {
+ const iconSize = getIconSize(String(namedLogo).toLowerCase())
+
+ if (iconSize) {
+ logoWidth = (iconSize.width / iconSize.height) * DEFAULT_LOGO_HEIGHT
+ }
+ }
+
// This ought to be the responsibility of the server, not `makeBadge`.
if (format === 'json') {
return JSON.stringify({
label,
message,
- logoWidth,
// Only call normalizeColor for the JSON case: this is handled
// internally by toSvgColor in the SVG case.
color: normalizeColor(color),
@@ -48,8 +57,6 @@ module.exports = function makeBadge({
throw new Error(`Unknown badge style: '${style}'`)
}
- logoWidth = +logoWidth || (logo ? DEFAULT_LOGO_HEIGHT : 0)
-
return stripXmlWhitespace(
render({
label,
diff --git a/core/base-service/base.js b/core/base-service/base.js
index fc1f881aac762..6904a113422cb 100644
--- a/core/base-service/base.js
+++ b/core/base-service/base.js
@@ -47,10 +47,6 @@ const optionalStringWhenNamedLogoPresent = Joi.alternatives().conditional(
},
)
-const optionalNumberWhenAnyLogoPresent = Joi.alternatives()
- .conditional('namedLogo', { is: Joi.string().required(), then: Joi.number() })
- .conditional('logoSvg', { is: Joi.string().required(), then: Joi.number() })
-
const serviceDataSchema = Joi.object({
isError: Joi.boolean(),
label: Joi.string().allow(''),
@@ -66,7 +62,6 @@ const serviceDataSchema = Joi.object({
logoSvg: Joi.string(),
logoColor: optionalStringWhenNamedLogoPresent,
logoSize: optionalStringWhenNamedLogoPresent,
- logoWidth: optionalNumberWhenAnyLogoPresent,
cacheSeconds: Joi.number().integer().min(0),
style: Joi.string(),
})
diff --git a/core/base-service/base.spec.js b/core/base-service/base.spec.js
index 023b30b39b4b7..4e968d07e4f64 100644
--- a/core/base-service/base.spec.js
+++ b/core/base-service/base.spec.js
@@ -375,7 +375,6 @@ describe('BaseService', function () {
style: 'flat',
namedLogo: undefined,
logo: undefined,
- logoWidth: undefined,
logoSize: undefined,
links: [],
labelColor: undefined,
diff --git a/core/base-service/coalesce-badge.js b/core/base-service/coalesce-badge.js
index 09803310b290f..b840860438261 100644
--- a/core/base-service/coalesce-badge.js
+++ b/core/base-service/coalesce-badge.js
@@ -2,8 +2,7 @@ import {
decodeDataUrlFromQueryParam,
prepareNamedLogo,
} from '../../lib/logos.js'
-import { svg2base64, getIconSize } from '../../lib/svg-helpers.js'
-import { DEFAULT_LOGO_HEIGHT } from '../../badge-maker/lib/constants.js'
+import { svg2base64 } from '../../lib/svg-helpers.js'
import coalesce from './coalesce.js'
import toArray from './to-array.js'
@@ -20,7 +19,7 @@ import toArray from './to-array.js'
// 1. When `?logo=` contains a simple-icons logo or contains a base64-encoded
// SVG, that logo is used. When a `&logoColor=` is specified, that color is
// used (except for the base64-encoded logos). Otherwise the default color
-// is used. The appearance of the logo can be customized using `logoWidth`,
+// is used.
// When `?logo=` is specified, any logo-related parameters specified
// dynamically by the service, or by default in the service, are ignored.
// 2. The second precedence is the dynamic logo returned by a service. This is
@@ -52,11 +51,7 @@ export default function coalesceBadge(
colorB: legacyOverrideColor,
colorA: legacyOverrideLabelColor,
} = overrides
- let {
- logoWidth: overrideLogoWidth,
- color: overrideColor,
- labelColor: overrideLabelColor,
- } = overrides
+ let { color: overrideColor, labelColor: overrideLabelColor } = overrides
// Only use the legacy properties if the new ones are not provided
if (typeof overrideColor === 'undefined') {
@@ -73,7 +68,6 @@ export default function coalesceBadge(
if (typeof overrideLabelColor === 'number') {
overrideLabelColor = `${overrideLabelColor}`
}
- overrideLogoWidth = +overrideLogoWidth || undefined
const {
isError,
@@ -85,7 +79,6 @@ export default function coalesceBadge(
namedLogo: serviceNamedLogo,
logoColor: serviceLogoColor,
logoSize: serviceLogoSize,
- logoWidth: serviceLogoWidth,
link: serviceLink,
cacheSeconds: serviceCacheSeconds,
style: serviceStyle,
@@ -131,7 +124,6 @@ export default function coalesceBadge(
// If the logo has been overridden it does not make sense to inherit the
// original width or position.
logoSize = overrideLogoSize
- logoWidth = overrideLogoWidth
} else {
if (serviceLogoSvg) {
logoSvgBase64 = svg2base64(serviceLogoSvg)
@@ -143,15 +135,8 @@ export default function coalesceBadge(
namedLogoColor = coalesce(overrideLogoColor, serviceLogoColor)
}
logoSize = coalesce(overrideLogoSize, serviceLogoSize)
- logoWidth = coalesce(overrideLogoWidth, serviceLogoWidth)
}
if (namedLogo) {
- const iconSize = getIconSize(String(namedLogo).toLowerCase())
-
- if (!logoWidth && iconSize && logoSize === 'auto') {
- logoWidth = (iconSize.width / iconSize.height) * DEFAULT_LOGO_HEIGHT
- }
-
logoSvgBase64 = prepareNamedLogo({
name: namedLogo,
color: namedLogoColor,
diff --git a/core/base-service/coalesce-badge.spec.js b/core/base-service/coalesce-badge.spec.js
index a98f05debd24f..425e45aff0c2d 100644
--- a/core/base-service/coalesce-badge.spec.js
+++ b/core/base-service/coalesce-badge.spec.js
@@ -185,7 +185,6 @@ describe('coalesceBadge', function () {
{
namedLogo: 'appveyor',
logoColor: 'red',
- logoWidth: 100,
},
{},
).logo,
@@ -246,20 +245,6 @@ describe('coalesceBadge', function () {
})
})
- describe('Logo width', function () {
- it('overrides the logoWidth', function () {
- expect(coalesceBadge({ logoWidth: 20 }, {}, {})).to.include({
- logoWidth: 20,
- })
- })
-
- it('applies the logo width', function () {
- expect(
- coalesceBadge({}, { namedLogo: 'npm', logoWidth: 275 }, {}),
- ).to.include({ logoWidth: 275 })
- })
- })
-
describe('Links', function () {
it('overrides the links', function () {
expect(
diff --git a/core/base-service/legacy-request-handler.js b/core/base-service/legacy-request-handler.js
index 83a78fd3fa6e3..3a44642c1240c 100644
--- a/core/base-service/legacy-request-handler.js
+++ b/core/base-service/legacy-request-handler.js
@@ -12,7 +12,6 @@ const globalQueryParams = new Set([
'logo',
'logoColor',
'logoSize',
- 'logoWidth',
'link',
'colorA',
'colorB',
diff --git a/services/endpoint-common.js b/services/endpoint-common.js
index 919667655e2f2..1cc0d7c1d0fe2 100644
--- a/services/endpoint-common.js
+++ b/services/endpoint-common.js
@@ -36,7 +36,6 @@ const endpointSchema = Joi.object({
logoSvg: Joi.string(),
logoColor: optionalStringWhenNamedLogoPresent,
logoSize: optionalStringWhenNamedLogoPresent,
- logoWidth: optionalNumberWhenAnyLogoPresent,
style: Joi.string(),
cacheSeconds: Joi.number().integer().min(0),
/*
@@ -45,6 +44,7 @@ const endpointSchema = Joi.object({
passing it should not throw an error
*/
logoPosition: optionalNumberWhenAnyLogoPresent,
+ logoWidth: optionalNumberWhenAnyLogoPresent,
})
// `namedLogo` or `logoSvg`; not both.
.oxor('namedLogo', 'logoSvg')
diff --git a/services/endpoint/endpoint.service.js b/services/endpoint/endpoint.service.js
index ba7bdfdcfdf39..45860c6ccdc4f 100644
--- a/services/endpoint/endpoint.service.js
+++ b/services/endpoint/endpoint.service.js
@@ -101,13 +101,6 @@ The endpoint badge takes a single required query param: url
, which
Supported for simple-icons logos only.
-
logoWidth
style