From a0e2803c51f7890f859c852d2f3d7da724afc729 Mon Sep 17 00:00:00 2001 From: Yash Singh Date: Mon, 8 Jan 2024 20:45:55 -0800 Subject: [PATCH] feat: support compare-versions version validation --- lib/rules/require-version.ts | 2 +- tests/lib/rules/require-version.ts | 32 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/rules/require-version.ts b/lib/rules/require-version.ts index 460254e..a29102f 100644 --- a/lib/rules/require-version.ts +++ b/lib/rules/require-version.ts @@ -1,7 +1,7 @@ import { createValidator } from '../utils/createValidator'; const versionRegex = - /^([\dA-Za-z–-]+)(\.[\dA-Za-z–-]+)*([+_]([\dA-Za-z-]+)(\.[\dA-Za-z-]+)*)?\.?\s*$/; + /^(?=[\dA-Za-z–-]*\d[\dA-Za-z–-]*)[\dA-Za-z–-]+(\.[\dA-Za-z–-]+)*([+_]([\dA-Za-z-]+)(\.[\dA-Za-z-]+)*)?\.?\s*$/; export default createValidator({ name: 'version', diff --git a/tests/lib/rules/require-version.ts b/tests/lib/rules/require-version.ts index 6ad9d66..e019ab0 100644 --- a/tests/lib/rules/require-version.ts +++ b/tests/lib/rules/require-version.ts @@ -4,17 +4,37 @@ import { RuleTester } from 'eslint'; const ruleTester = new RuleTester(); ruleTester.run('require-version', requireVersion, { valid: [ + // Pulled from TamperMonkey examples https://www.tampermonkey.net/documentation.php#meta:version and others are alterations of those 'Alpha-v1', + 'Alpha-v2', + 'Alpha-v10', '0.0.0', '000.0.1', + '0.5preliminary', '0.6pre4', '1.00', '1.0.0', '1.-1', '1.', '1.1a', + '1.1aa', + '1.1ab', + '1.1c', + '1.10.0-alpha', + '1.12+1.0', '1.1.1.1.2.0.1.1.1.1.1', + // compare-versions tests + '1.2.3a', + '1.2.-3a', + '1.0.x', + '1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay', + '1.2.3-SNAPSHOT-123', + '1.2.3----RC-SNAPSHOT.12.9.1--.12+788', + '1.0.0+0.build.1-rc.10000aaa-kk-0.1', + '1.0.0-0A.is.legal', + '1.1.2-prerelease+meta', + // https://semver.org/#spec-item-9, '1.0.0-alpha', '1.0.0-alpha.1', @@ -77,6 +97,18 @@ ruleTester.run('require-version', requireVersion, { // @version @.€.$ // ==/UserScript==`, errors: [{ messageId: 'invalidVersion' }] + }, + { + code: `// ==UserScript== + // @version 1.2.31.2.3----RC-SNAPSHOT.12.09.1--..12+788 + // ==/UserScript==`, + errors: [{ messageId: 'invalidVersion' }] + }, + { + code: `// ==UserScript== + // @version beta + // ==/UserScript==`, + errors: [{ messageId: 'invalidVersion' }] } ] });