{"record":{"id":"4910d4014bb081c4","repo":"badges/shields","slug":"property-latest-not-found","errorCode":null,"errorMessage":"property 'latest' not found","messagePattern":"property 'latest' not found","errorType":"exception","errorClass":"InvalidResponse","httpStatus":null,"severity":"error","filePath":"services/maven-metadata/maven-metadata.service.js","lineNumber":93,"sourceCode":"  async fetch({ metadataUrl }) {\n    return this._requestXml({\n      schema,\n      url: metadataUrl,\n      parserOptions: { parseTagValue: false },\n    })\n  }\n\n  static applyFilter({ versions, filter }) {\n    if (!filter) {\n      return versions\n    }\n    return matcher(versions, filter)\n  }\n\n  static getLatestVersion({ data, strategy, filter }) {\n    if (strategy === 'latestProperty') {\n      if (data.metadata.versioning.latest === undefined) {\n        throw new InvalidResponse({\n          prettyMessage: \"property 'latest' not found\",\n        })\n      }\n      return data.metadata.versioning.latest\n    } else if (strategy === 'releaseProperty') {\n      if (data.metadata.versioning.release === undefined) {\n        throw new InvalidResponse({\n          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',","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/badges/shields/blob/766fd8bc89a90b8534dc573ab72dec30215ab1ec/services/maven-metadata/maven-metadata.service.js#L75-L111","documentation":"Thrown when strategy 'latestProperty' is requested but the parsed maven-metadata.xml has no <latest> element under <versioning>, so data.metadata.versioning.latest is undefined. The library treats a missing required field in the upstream XML as an InvalidResponse rather than silently returning undefined.","triggerScenarios":"Calling handle/getLatestVersion with strategy='latestProperty' on metadata from a repository that omits the <latest> tag — common in modern maven-metadata.xml files generated by newer build tools where only <release> or <versions> is present.","commonSituations":"Publishing with Gradle or maven-publish plugins that no longer emit <latest>, pointing at artifact metadata for snapshot-free release-only repos, or third-party/mirror repositories with incomplete metadata.","solutions":["Switch strategy to 'releaseProperty' if the metadata has <release>, or 'highestVersion' which derives the version from the versions list.","Inspect the raw maven-metadata.xml for the artifact and confirm which versioning fields it actually contains.","Regenerate/republish the artifact so its maven-metadata.xml includes <latest>, or fix the repository manager (e.g. Nexus/Artifactory) metadata.","Wrap the call in a try/catch and fall back to the highestVersion strategy when this error occurs."],"exampleFix":"// before\nconst v = await service.getLatestVersion({ data, strategy: 'latestProperty', filter })\n// after\nconst strategy = data.metadata.versioning.latest !== undefined ? 'latestProperty' : (data.metadata.versioning.release !== undefined ? 'releaseProperty' : 'highestVersion')\nconst v = await service.getLatestVersion({ data, strategy, filter })","handlingStrategy":"validation","validationCode":"function hasLatest(data) {\n  return data?.metadata?.versioning?.latest !== undefined\n}\nif (!hasLatest(data)) {\n  return data.metadata?.versioning?.release !== undefined\n    ? service.getLatestVersion({ data, strategy: 'releaseProperty' })\n    : service.getLatestVersion({ data, strategy: 'highestVersion' })\n}","typeGuard":"function hasLatest(data) {\n  return data?.metadata?.versioning?.latest !== undefined\n}","tryCatchPattern":"try {\n  return await service.getLatestVersion({ data, strategy: 'latestProperty' })\n} catch (err) {\n  if (err && err.prettyMessage === \"property 'latest' not found\") {\n    return service.getLatestVersion({ data, strategy: 'highestVersion' })\n  }\n  throw err\n}","preventionTips":["Check which versioning fields the target repository's maven-metadata.xml actually emits before choosing a strategy.","Prefer 'highestVersion' for repos generated by modern build tools that omit <latest>.","Guard with an optional-chain check on data.metadata.versioning.latest first.","Keep a fallback chain: latestProperty → releaseProperty → highestVersion."],"tags":["invalid-response","maven","metadata","missing-field"],"backgroundTag":"missing-metadata-field","analyzedSha":"766fd8bc89a90b8534dc573ab72dec30215ab1ec","analyzedAt":"2026-08-30T01:40:27.499Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}