{"record":{"id":"4f8dead326e4a246","repo":"badges/shields","slug":"no-released-version-found","errorCode":null,"errorMessage":"no released version found","messagePattern":"no released version found","errorType":"exception","errorClass":"NotFound","httpStatus":404,"severity":"error","filePath":"services/packagist/packagist-base.js","lineNumber":161,"sourceCode":"   * Find the object representation of the latest release.\n   *\n   * @param {object[]} versions An array of object representing a version.\n   * @param {boolean} includePrereleases Includes pre-release semver for the search.\n   *\n   * @returns {object} The object of the latest version.\n   * @throws {NotFound} Thrown if there is no item from the version array.\n   */\n  findLatestRelease(versions, includePrereleases = false) {\n    // Find the latest version string, if not found, throw NotFound.\n    const versionStrings = versions\n      .filter(\n        version =>\n          typeof version.version === 'string' ||\n          version.version instanceof String,\n      )\n      .map(version => version.version)\n    if (versionStrings.length < 1) {\n      throw new NotFound({ prettyMessage: 'no released version found' })\n    }\n\n    let release = latest(versionStrings)\n    if (!includePrereleases) {\n      release = latest(versionStrings.filter(isStable)) || release\n    }\n    return versions.filter(version => version.version === release)[0]\n  }\n}\n\nconst description = `\n<a href=\"https://packagist.org/\">Packagist</a> is a registry for PHP packages which can be installed with Composer.\n`\n\nconst customServerDocumentationFragment = `\nNote that only network-accessible packagist.org and other self-hosted Packagist instances are supported.\n`\n","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/badges/shields/blob/766fd8bc89a90b8534dc573ab72dec30215ab1ec/services/packagist/packagist-base.js#L143-L179","documentation":"The Packagist base service collects version strings from the packagist metadata and, if none survive filtering (no entries with a string `version` field), throws NotFound with this message. It represents a package that exists on Packagist but has no usable released versions listed.","triggerScenarios":"Requesting a Packagist version/dependency badge for a package whose metadata `versions` object is empty or contains only entries lacking string version fields (length < 1 after mapping).","commonSituations":"Newly registered packages with no tagged releases (only dev branches), abandoned packages whose versions were purged, or branch-only/abandoned packages where packagist lists no version entries.","solutions":["Confirm the package has at least one tagged release on packagist.org; if you own it, tag a release (e.g. v1.0.0) and push it.","Verify the vendor/package name in the badge URL points at the intended package.","If the package is abandoned, remove the badge or point it at a maintained fork."],"exampleFix":"// before\ncomposer require --dev vendor/pkg  (never tagged)\n// after\ngit tag v1.0.0 && git push origin v1.0.0  (then re-check the badge)","handlingStrategy":"validation","validationCode":"// Ensure the package has tagged releases before using a version badge\nconst meta = await fetch(`https://repo.packagist.org/p2/${vendor}/${pkg}.json`).then(r => r.json())\nconst versions = (meta.packages?.[`${vendor}/${pkg}`] || []).filter(v => typeof v.version === 'string')\nif (versions.length < 1) throw new Error('Package has no tagged releases')","typeGuard":"function hasReleases(meta, name) {\n  const list = meta && meta.packages && meta.packages[name]\n  return Array.isArray(list) &&\n    list.some(v => typeof v.version === 'string' || v.version instanceof String)\n}","tryCatchPattern":"try {\n  const badge = await getPackagistVersion(vendor, pkg)\n} catch (e) {\n  if (e.message === 'no released version found') {\n    // package exists but untagged: omit badge until a release is tagged\n  } else { throw e }\n}","preventionTips":["Tag a stable release (and push the tag) before adding a version badge","Check packagist.org shows release versions, not just branch aliases","Watch for abandoned packages whose versions get purged upstream"],"tags":["not-found","packagist","versioning","third-party-api"],"backgroundTag":"upstream-resource-not-found","analyzedSha":"766fd8bc89a90b8534dc573ab72dec30215ab1ec","analyzedAt":"2026-08-30T01:40:27.499Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}