{"record":{"id":"53b806b9593bc9ef","repo":"badges/shields","slug":"no-matching-versions-found","errorCode":null,"errorMessage":"no matching versions found","messagePattern":"no matching versions found","errorType":"exception","errorClass":"NotFound","httpStatus":404,"severity":"error","filePath":"services/maven-metadata/maven-metadata.service.js","lineNumber":119,"sourceCode":"          prettyMessage: \"property 'release' not found\",\n        })\n      }\n      return data.metadata.versioning.release\n    } else if (strategy === 'highestVersion') {\n      if (\n        data.metadata.versioning.versions?.version === undefined ||\n        data.metadata.versioning.versions?.version?.length === 0\n      ) {\n        throw new InvalidResponse({\n          prettyMessage: 'no versions found',\n        })\n      }\n      const versions = this.applyFilter({\n        versions: data.metadata.versioning.versions.version,\n        filter,\n      })\n      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}`,","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/badges/shields/blob/766fd8bc89a90b8534dc573ab72dec30215ab1ec/services/maven-metadata/maven-metadata.service.js#L101-L137","documentation":"Thrown as NotFound when strategy 'highestVersion' found versions in the metadata, but the user-supplied filter excluded every one of them, leaving the filtered list empty. This is not a server/metadata problem — it means the version list is fine but no version matches the requested filter (e.g. a version range or regex).","triggerScenarios":"Calling getLatestVersion/handle with a filter (version range/pattern) that matches zero of the versions in data.metadata.versioning.versions.version, e.g. filter '1.2.x' against an artifact that only publishes 2.x versions.","commonSituations":"Overly restrictive range specifications, typo'd version prefixes, artifacts whose versions jumped major versions, or expecting snapshot/milestone versions that a filter excludes.","solutions":["Widen or correct the version filter/range so it can match existing versions of the artifact.","Log or inspect the unfiltered version list and test the filter against it (this.applyFilter) to see why nothing matches.","Drop the filter entirely to confirm the artifact has resolvable versions, then tighten it incrementally.","Catch the NotFound and return a sensible default or null in your calling code instead of failing."],"exampleFix":"// before\nconst v = await service.getLatestVersion({ data, strategy: 'highestVersion', filter: '2.0.x' })\n// after\nconst v = await service.getLatestVersion({ data, strategy: 'highestVersion', filter: '2.x' }) // or omit filter","handlingStrategy":"try-catch","validationCode":"const filtered = versions.filter(v => matchFilter(v, filter)) // pre-check filter against known versions\nif (filtered.length === 0) {\n  console.warn(`filter ${filter} matches none of`, versions)\n}","typeGuard":null,"tryCatchPattern":"try {\n  return await service.getLatestVersion({ data, strategy: 'highestVersion', filter })\n} catch (err) {\n  if (err && err.prettyMessage === 'no matching versions found') {\n    return null // or retry with a broader filter\n  }\n  throw err\n}","preventionTips":["Test version filters/ranges against the artifact's actual version list before finalizing them.","Start with no filter, confirm versions resolve, then tighten the filter.","Avoid hardcoding major-version prefixes that the artifact may have outgrown.","Treat NotFound as an expected outcome (return null/default) rather than an unhandled crash."],"tags":["not-found","maven","version-filter","no-match"],"backgroundTag":"no-matching-version-found","analyzedSha":"766fd8bc89a90b8534dc573ab72dec30215ab1ec","analyzedAt":"2026-08-30T01:40:27.499Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}