@kubb/core 5.0.0-alpha.41 → 5.0.0-alpha.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,4 @@
1
1
  import { findPackageJSON, readSync } from '@internals/utils'
2
- import { coerce, satisfies } from 'semver'
3
2
 
4
3
  type PackageJSON = {
5
4
  dependencies?: Record<string, string>
@@ -54,6 +53,31 @@ function getVersionSync(dependency: DependencyName | RegExp, cwd?: string): Depe
54
53
  * satisfiesDependency(/^@tanstack\//, '>=5') // true when any @tanstack/* >=5 is found
55
54
  * ```
56
55
  */
56
+ function coerceSemver(version: string): [number, number, number] | null {
57
+ const m = version.match(/(\d+)(?:\.(\d+))?(?:\.(\d+))?/)
58
+ return m ? [Number(m[1]), Number(m[2] ?? 0), Number(m[3] ?? 0)] : null
59
+ }
60
+
61
+ function satisfiesSemver(v: [number, number, number], range: string): boolean {
62
+ return range
63
+ .trim()
64
+ .split(/\s+/)
65
+ .every((cond) => {
66
+ const m = cond.match(/^(>=|<=|>|<|=|\^|~)?(\d+)(?:\.(\d+))?(?:\.(\d+))?$/)
67
+ if (!m) return false
68
+ const op = m[1] ?? '='
69
+ const r: [number, number, number] = [Number(m[2]), Number(m[3] ?? 0), Number(m[4] ?? 0)]
70
+ const cmp = v[0] !== r[0] ? v[0] - r[0] : v[1] !== r[1] ? v[1] - r[1] : v[2] - r[2]
71
+ if (op === '>=') return cmp >= 0
72
+ if (op === '<=') return cmp <= 0
73
+ if (op === '>') return cmp > 0
74
+ if (op === '<') return cmp < 0
75
+ if (op === '^') return v[0] === r[0] && cmp >= 0
76
+ if (op === '~') return v[0] === r[0] && v[1] === r[1] && cmp >= 0
77
+ return cmp === 0
78
+ })
79
+ }
80
+
57
81
  export function satisfiesDependency(dependency: DependencyName | RegExp, version: DependencyVersion, cwd?: string): boolean {
58
82
  const packageVersion = getVersionSync(dependency, cwd)
59
83
 
@@ -65,11 +89,11 @@ export function satisfiesDependency(dependency: DependencyName | RegExp, version
65
89
  return true
66
90
  }
67
91
 
68
- const semVer = coerce(packageVersion)
92
+ const semVer = coerceSemver(packageVersion)
69
93
 
70
94
  if (!semVer) {
71
95
  return false
72
96
  }
73
97
 
74
- return satisfies(semVer, version)
98
+ return satisfiesSemver(semVer, version)
75
99
  }