{"record":{"id":"9642ecc5b23b4223","repo":"liabru/matter-js","slug":"plugin-versionparse-is-not-a-valid-version-or-ran","errorCode":null,"errorMessage":"Plugin.versionParse: is not a valid version or range.","messagePattern":"Plugin\\.versionParse: is not a valid version or range\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/core/Plugin.js","lineNumber":281,"sourceCode":"     * Versions are strictly of the format `x.y.z` (as in [semver](http://semver.org/)).\n     * Versions may optionally have a prerelease tag in the format `x.y.z-alpha`.\n     * Ranges are a strict subset of [npm ranges](https://docs.npmjs.com/misc/semver#advanced-range-syntax).\n     * Only the following range types are supported:\n     * - Tilde ranges e.g. `~1.2.3`\n     * - Caret ranges e.g. `^1.2.3`\n     * - Greater than ranges e.g. `>1.2.3`\n     * - Greater than or equal ranges e.g. `>=1.2.3`\n     * - Exact version e.g. `1.2.3`\n     * - Any version `*`\n     * @method versionParse\n     * @param range {string} The version string.\n     * @return {object} The version range parsed into its components.\n     */\n    Plugin.versionParse = function(range) {\n        var pattern = /^(\\*)|(\\^|~|>=|>)?\\s*((\\d+)\\.(\\d+)\\.(\\d+))(-[0-9A-Za-z-+]+)?$/;\n\n        if (!pattern.test(range)) {\n            Common.warn('Plugin.versionParse:', range, 'is not a valid version or range.');\n        }\n\n        var parts = pattern.exec(range);\n        var major = Number(parts[4]);\n        var minor = Number(parts[5]);\n        var patch = Number(parts[6]);\n\n        return {\n            isRange: Boolean(parts[1] || parts[2]),\n            version: parts[3],\n            range: range,\n            operator: parts[1] || parts[2] || '',\n            major: major,\n            minor: minor,\n            patch: patch,\n            parts: [major, minor, patch],\n            prerelease: parts[7],\n            number: major * 1e8 + minor * 1e4 + patch","sourceCodeStart":263,"sourceCodeEnd":299,"githubUrl":"https://github.com/liabru/matter-js/blob/acb99b6f8784c809b940f1d2cf745427e088e088/src/core/Plugin.js#L263-L299","documentation":"Plugin.versionParse parses a version or semver range like '1.2.3', '^1.2.3', '~1.2.3', '>=1.2.3', or '*'. If the input fails the pattern, this warning is logged; execution then continues and pattern.exec may return null-ish parts, producing NaN version components.","triggerScenarios":"Calling Plugin.versionParse with a malformed string (e.g. '1.2', 'v1.2.3', '1.2.3-beta.2' with dots in prerelease beyond the charset, 'latest', empty string), or declaring dependency ranges in that form via plugin 'uses'.","commonSituations":"Using a leading 'v' prefix as in npm; two-part versions like '1.2'; tags 'latest' or 'next'; whitespace in unusual places; plugin versions defined with pre-release tags containing invalid characters like '+' combined unexpectedly.","solutions":["Use full x.y.z semver with an optional single ^, ~, >=, > prefix or '*': e.g. '1.2.3' or '^1.2.3'.","Strip a leading 'v' and any unsupported characters from the version string.","Replace tags like 'latest' with '*' (any version)."],"exampleFix":"// before\nversion: 'v1.2.3'\n// after\nversion: '1.2.3'","handlingStrategy":"validation","validationCode":"var verPattern = /^(\\*)|(\\^|~|>=|>)?\\s*((\\d+)\\.(\\d+)\\.(\\d+))(-[0-9A-Za-z-+]+)?$/;\nif (typeof range !== 'string' || !verPattern.test(range)) {\n  throw new Error('Version/range must be x.y.z or ^|~|>=|> x.y.z or *');\n}","typeGuard":"function isValidVersionString(v) {\n  return typeof v === 'string' && /^(\\*)|(\\^|~|>=|>)?\\s*\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-+]+)?$/.test(v);\n}","tryCatchPattern":null,"preventionTips":["Declare plugin versions and ranges as strict semver x.y.z with no leading 'v'.","Use '*' instead of tags like 'latest' when any version is acceptable.","Add a lint check that validates every version/uses string against the semver pattern."],"tags":["plugin","parsing","semver"],"backgroundTag":"invalid-version-string","analyzedSha":"acb99b6f8784c809b940f1d2cf745427e088e088","analyzedAt":"2026-09-02T21:29:27.057Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}