(M, m, p)
| 278 | const isX = id => !id || id.toLowerCase() === 'x' || id === '*' |
| 279 | |
| 280 | const invalidXRangeOrder = (M, m, p) => ( |
| 281 | (isX(M) && !isX(m)) || |
| 282 | (isX(m) && p && !isX(p)) |
| 283 | ) |
| 284 | |
| 285 | // ~, ~> --> * (any, kinda silly) |
| 286 | // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 |