qwreey/type_version_check

Version pattern matching for string literal types at compile time (CheckVersion type function) and at runtime (matchesPattern): `|` alternatives, glob (*) and lexicographic-floor (N^) patterns with SemVer prerelease/build tails (engine-agnostic, not quad-specific)

qwreey/type_version_check

Compile-time version pattern matching for string literal types, used by quad, not quad-specific. CheckVersion<Actual, Pattern> compares a version literal against patterns built from | alternatives, glob (*) and lexicographic-floor (N^) places; a SemVer prerelease tail must be present on both sides or neither, and build metadata is ignored (see the source header for the full rules). The same rules are exported as a runtime function, matchesPattern(actual, pattern), which is what quad_roblox uses to gate the installed quad_base version.

The N in N^ is an ASCII decimal integer; other notations (hexadecimal, exponent, inf, nan, a sign, whitespace) are undefined. A place whose text before ^ is not a number (x^, a bare ^) never matches.

Part of the quad monorepo. Documentation (Korean): https://quad.qwreey.moe/ — start at 설치 or 왜 Quad인가; the same text is in the repo under docs/.

This package is versioned on its own (SemVer, see CHANGELOG.md) — it was published in lockstep with quad up to 3.2.0, and 4.0.0 is its first independent release. The three quad packages below (quad_base, quad_roblox, quad_types) share one version; quad_base is the main one, and the docs show its version:

PackageRoleYou add it?
qwreey/quad_baseengine-agnostic core (reactivity + dispatch engine)yes
qwreey/quad_robloxRoblox backend (Declaration, Tween/Animate, OnChange, Claim)yes, for Roblox
qwreey/quad_typespublic type contract (no implementation)yes, for --!strict consumers
qwreey/quad_errorlevel-tagged error utility (own version)no — pulled in as a dependency
qwreey/type_version_checkcompile-time version pattern matching (own version)no — pulled in as a dependency

License: MIT.