{"record":{"id":"a69f2d00263a028f","repo":"badges/shields","slug":"filter-is-not-valid-with-strategy-strategy","errorCode":null,"errorMessage":"filter is not valid with strategy ${strategy}","messagePattern":"filter is not valid with strategy (.+?)","errorType":"exception","errorClass":"InvalidParameter","httpStatus":null,"severity":"error","filePath":"services/maven-metadata/maven-metadata.service.js","lineNumber":136,"sourceCode":"      if (versions.length === 0) {\n        throw new NotFound({ prettyMessage: 'no matching versions found' })\n      }\n      return versions.sort(compare).reverse()[0]\n    }\n    throw new InvalidParameter({ prettyMessage: 'unknown strategy' })\n  }\n\n  async handle(\n    _namedParams,\n    { metadataUrl, versionPrefix, versionSuffix, strategy, filter },\n  ) {\n    if (\n      (versionPrefix !== undefined ||\n        versionSuffix !== undefined ||\n        filter !== undefined) &&\n      strategy !== 'highestVersion'\n    ) {\n      throw new InvalidParameter({\n        prettyMessage: `filter is not valid with strategy ${strategy}`,\n      })\n    }\n\n    if (versionPrefix !== undefined || versionSuffix !== undefined) {\n      filter = `${versionPrefix || ''}*${versionSuffix || ''}`\n    }\n\n    const data = await this.fetch({ metadataUrl })\n    return renderVersionBadge({\n      version: this.constructor.getLatestVersion({ data, strategy, filter }),\n    })\n  }\n}\n","sourceCodeStart":118,"sourceCodeEnd":151,"githubUrl":"https://github.com/badges/shields/blob/766fd8bc89a90b8534dc573ab72dec30215ab1ec/services/maven-metadata/maven-metadata.service.js#L118-L151","documentation":"This InvalidParameter is thrown by the maven-metadata service's handle() when `versionPrefix`, `versionSuffix`, or `filter` are supplied while `strategy` is anything other than 'highestVersion'. Filtering by prefix/suffix only makes sense for the highestVersion strategy, so the combination is rejected up front. The message includes the offending strategy so you can see which value conflicted.","triggerScenarios":"A badge URL combining e.g. `?strategy=latest-release&versionPrefix=1.` or `?strategy=semver&filter=.*-beta` — any of versionPrefix/versionSuffix/filter present with strategy !== 'highestVersion'.","commonSituations":"Users adding a version filter to an existing badge URL without changing the strategy; badge generators that emit both parameters; migrating from defaults to an explicit strategy and keeping old filter params.","solutions":["Change `strategy` to `highestVersion` when using versionPrefix/versionSuffix/filter","Remove versionPrefix/versionSuffix/filter if you want to keep the current strategy","Use only `filter` (glob) with highestVersion instead of prefix+suffix","Update your badge generator so it emits filter params only for highestVersion"],"exampleFix":"// before\n?strategy=latest-release&versionPrefix=2.\n// after\n?strategy=highestVersion&versionPrefix=2.","handlingStrategy":"validation","validationCode":"const wantsFilter = versionPrefix !== undefined || versionSuffix !== undefined || filter !== undefined\nif (wantsFilter && strategy !== 'highestVersion') {\n  throw new Error('versionPrefix/versionSuffix/filter require strategy=highestVersion')\n}","typeGuard":"function canUseFilter(params) {\n  const hasFilter = params.versionPrefix !== undefined || params.versionSuffix !== undefined || params.filter !== undefined\n  return !hasFilter || params.strategy === 'highestVersion'\n}","tryCatchPattern":"try {\n  return await renderBadge(params)\n} catch (e) {\n  if (e instanceof InvalidParameter && /filter is not valid with strategy/.test(e.message)) {\n    return renderBadge({ ...params, strategy: 'highestVersion' })\n  }\n  throw e\n}","preventionTips":["Encode the strategy/filter compatibility rule in your URL-builder so invalid combos are unrepresentable","When adding versionPrefix/versionSuffix, always set strategy=highestVersion in the same change","Prefer a single `filter` glob over prefix+suffix to reduce parameter surface","Add an integration test per strategy/filter combination you rely on"],"tags":["invalid-parameter","maven","parameter-conflict","query-string"],"backgroundTag":"incompatible-parameter-combination","analyzedSha":"766fd8bc89a90b8534dc573ab72dec30215ab1ec","analyzedAt":"2026-08-30T01:40:27.499Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}