Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Be more strict with Composer version constraints #756

Merged
merged 71 commits into from
Jul 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
d8eeae8
Be more strict with Composer version constraints
fredden Nov 10, 2022
ec9235a
Move composer/semver to 'require' from require-dev
fredden Nov 10, 2022
fb89ad0
Improve test coverage (to appease mutation check)
fredden Nov 10, 2022
1c115d4
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Nov 28, 2022
6d0ce73
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Nov 28, 2022
ce2adf4
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Nov 28, 2022
0c50a7d
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Nov 28, 2022
893874e
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Dec 14, 2022
7cf54d1
Merge branch 'main' into version-normalisation
localheinz Dec 26, 2022
3dc81d0
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Dec 27, 2022
1bc7e57
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 2, 2023
a021d10
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 3, 2023
922449b
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 4, 2023
3cbcf91
Handle inline aliases
fredden Jan 4, 2023
5178bdb
Remove rogue trailing 'or'
fredden Jan 4, 2023
a1c2769
Update template files to match expected results
fredden Jan 4, 2023
2acbaf4
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 5, 2023
a332525
Merge branch 'main' into version-normalisation
localheinz Jan 5, 2023
cb029c2
Merge branch 'main' into version-normalisation
localheinz Jan 5, 2023
a42f6a9
Merge branch 'main' into version-normalisation
localheinz Jan 5, 2023
a4d62d8
Merge branch 'main' into version-normalisation
localheinz Jan 5, 2023
98115c4
Merge branch 'main' into version-normalisation
localheinz Jan 5, 2023
d801236
Upgrade minimum version of composer/semver
fredden Jan 6, 2023
8b24308
Increase test coverage
fredden Jan 6, 2023
6853190
Merge branch 'main' into version-normalisation
localheinz Jan 6, 2023
f078956
Merge branch 'main' into version-normalisation
localheinz Jan 6, 2023
dc3521e
Fix: Widen version constraint
localheinz Jan 6, 2023
1f64e76
Merge branch 'main' into version-normalisation
localheinz Jan 6, 2023
05caa1e
Fix: Revert
localheinz Jan 6, 2023
4eac7e0
Enhancement: Add examples
localheinz Jan 6, 2023
688a3d0
Fix: Indentation
localheinz Jan 6, 2023
f0e6e75
Fix: Indentation
localheinz Jan 6, 2023
8e41340
Fix: Remove
localheinz Jan 6, 2023
fb51b90
Fix: Remove unnecessary statement
localheinz Jan 6, 2023
b4aefc8
Fix: Use boolean expression
localheinz Jan 7, 2023
39ef08e
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 10, 2023
0e877f5
Trim patch number when zero for caret operator
fredden Jan 10, 2023
98e7107
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 13, 2023
1401573
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 16, 2023
8ff1db1
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 16, 2023
14e5a1e
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 20, 2023
3872ae7
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 24, 2023
f07adb6
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jan 25, 2023
5ae71fb
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 2, 2023
1a0b3a9
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 3, 2023
bb82b43
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 7, 2023
def6c3c
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 8, 2023
0690005
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 15, 2023
ccc4214
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 16, 2023
6c9b7ae
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 18, 2023
519fc93
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 20, 2023
f2c4aab
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 20, 2023
068e5e6
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 21, 2023
233a2ab
Remove overlapping constraints
fredden Feb 21, 2023
d82d58c
Increase test coverage
fredden Feb 21, 2023
b11ad10
Increase test coverage
fredden Feb 23, 2023
6b45571
Move new tests to correct files
fredden Feb 23, 2023
1328019
Enhancement: Extract method
localheinz Feb 24, 2023
b1e8674
Enhancement: Update CHANGELOG.md
localheinz Feb 24, 2023
80555f1
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 24, 2023
c51743d
Merge remote-tracking branch 'origin/remove-overlapping' into version…
fredden Feb 24, 2023
3e4c3f0
Correct whitespace with php-cs-fixer
fredden Feb 24, 2023
7884c09
Remove stray changelog entry
fredden Feb 24, 2023
cd13245
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 24, 2023
83bd8dd
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 27, 2023
21f905e
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 27, 2023
92faf71
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Feb 28, 2023
65f06f2
Merge remote-tracking branch 'upstream/main' into version-normalisation
fredden Jun 28, 2023
ee54f01
Merge branch 'main' into version-normalisation
localheinz Jul 9, 2023
c38a345
Fix: Remove adjustment for parts (for now)
localheinz Jul 9, 2023
8631af0
Fix: Update CHANGELOG.md
localheinz Jul 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ For a full diff see [`4.1.0...main`][4.1.0...main].
### Changed

- Dropped support for PHP 8.0 ([#917]), by [@localheinz]
- Adjusted `Vendor\Composer\VersionConstraintNormalizer` to prefer tilde operators (`~`) over wildcard operators (`*`), and caret operators (`^`) over tilde operators (`~`) ([#756]), by [@fredden]

## [`4.1.0`][4.1.0]

Expand Down Expand Up @@ -592,6 +593,7 @@ For a full diff see [`5d8b3e2...0.1.0`][5d8b3e2...0.1.0].
[#698]: https://github.com/ergebnis/json-normalizer/pull/698
[#705]: https://github.com/ergebnis/json-normalizer/pull/705
[#723]: https://github.com/ergebnis/json-normalizer/pull/723
[#756]: https://github.com/ergebnis/json-normalizer/pull/756
[#757]: https://github.com/ergebnis/json-normalizer/pull/757
[#772]: https://github.com/ergebnis/json-normalizer/pull/772
[#774]: https://github.com/ergebnis/json-normalizer/pull/774
Expand Down
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,31 @@ sections, the `Vendor\Composer\VersionConstraintNormalizer` will ensure that
}
```

- tilde operators (`~`) are preferred over wildcard (`*`) version ranges

```diff
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#version-range",
"require": {
"foo/bar": "*",
- "foo/baz": "1.0.*"
+ "foo/baz": "~1.0.0"
}
```

- caret operators are preferred over tilde operators

```diff
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#version-range",
"require": {
- "foo/bar": "~1",
- "foo/baz": "~1.3"
+ "foo/bar": "^1.0",
+ "foo/baz": "^1.3"
}
```

- version numbers are sorted in ascending order

```diff
Expand Down
24 changes: 24 additions & 0 deletions src/Vendor/Composer/VersionConstraintNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ private function normalizeVersionConstraint(string $versionConstraint): string
}

$normalized = self::normalizeVersionConstraintSeparators($normalized);
$normalized = self::replaceWildcardWithTilde($normalized);
$normalized = self::replaceTildeWithCaret($normalized);
$normalized = self::removeDuplicateVersionConstraints($normalized);
$normalized = self::removeOverlappingVersionConstraints($normalized);
$normalized = self::removeUselessInlineAliases($normalized);
Expand Down Expand Up @@ -114,6 +116,28 @@ private static function normalizeVersionConstraintSeparators(string $versionCons
}, $orConstraints));
}

private static function replaceWildcardWithTilde(string $versionConstraint): string
{
$split = \explode(' ', $versionConstraint);

foreach ($split as &$part) {
$part = \preg_replace('{^(\d+(?:\.\d+)*)\.\*$}', '~$1.0', $part);
}

return \implode(' ', $split);
}

private static function replaceTildeWithCaret(string $versionConstraint): string
{
$split = \explode(' ', $versionConstraint);

foreach ($split as &$part) {
$part = \preg_replace('{^~(\d+(?:\.\d+)?)$}', '^$1', $part);
}

return \implode(' ', $split);
}

private static function removeDuplicateVersionConstraints(string $versionConstraint): string
{
$orConstraints = self::splitIntoOrConstraints($versionConstraint);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#version-range",
"value-contains-packages-and-version-constraints": {
"combination-or-version-range-tilde-duplicate/01-without-spaces-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/02-without-spaces-untrimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/03-with-single-space-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/04-with-single-space-untrimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/05-with-double-space-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/06-with-double-space-untrimmed": "~0 || ~1.2 || ~2.3.4"
"combination-or-version-range-tilde-duplicate/01-without-spaces-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/02-without-spaces-untrimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/03-with-single-space-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/04-with-single-space-untrimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/05-with-double-space-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-duplicate/06-with-double-space-untrimmed": "^0 || ^1.2 || ~2.3.4"
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#version-range",
"value-contains-packages-and-version-constraints": {
"combination-or-version-range-tilde-not-overlapping/01-without-spaces-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/02-without-spaces-untrimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/03-with-single-space-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/04-with-single-space-untrimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/05-with-double-space-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/06-with-double-space-untrimmed": "~0 || ~1.2 || ~2.3.4"
"combination-or-version-range-tilde-not-overlapping/01-without-spaces-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/02-without-spaces-untrimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/03-with-single-space-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/04-with-single-space-untrimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/05-with-double-space-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-not-overlapping/06-with-double-space-untrimmed": "^0 || ^1.2 || ~2.3.4"
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#version-range",
"value-contains-packages-and-version-constraints": {
"combination-or-version-range-tilde-overlapping/01-without-spaces-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/02-without-spaces-untrimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/03-with-single-space-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/04-with-single-space-untrimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/05-with-double-space-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/06-with-double-space-untrimmed": "~0 || ~1.2 || ~2.3.4"
"combination-or-version-range-tilde-overlapping/01-without-spaces-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/02-without-spaces-untrimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/03-with-single-space-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/04-with-single-space-untrimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/05-with-double-space-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-overlapping/06-with-double-space-untrimmed": "^0 || ^1.2 || ~2.3.4"
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#version-range",
"value-contains-packages-and-version-constraints": {
"combination-or-version-range-tilde-unique/01-without-spaces-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/02-without-spaces-untrimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/03-with-single-space-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/04-with-single-space-untrimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/05-with-double-space-trimmed": "~0 || ~1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/06-with-double-space-untrimmed": "~0 || ~1.2 || ~2.3.4"
"combination-or-version-range-tilde-unique/01-without-spaces-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/02-without-spaces-untrimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/03-with-single-space-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/04-with-single-space-untrimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/05-with-double-space-trimmed": "^0 || ^1.2 || ~2.3.4",
"combination-or-version-range-tilde-unique/06-with-double-space-untrimmed": "^0 || ^1.2 || ~2.3.4"
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#version-range",
"value-contains-packages-and-version-constraints": {
"combination-or-version-range-tilde-unsorted/01-without-spaces-trimmed": "~0 || ~1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/02-without-spaces-untrimmed": "~0 || ~1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/03-with-single-space-trimmed": "~0 || ~1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/04-with-single-space-untrimmed": "~0 || ~1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/05-with-double-space-trimmed": "~0 || ~1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/06-with-double-space-untrimmed": "~0 || ~1.2 || ~2.3.4 || ~12.3.4"
"combination-or-version-range-tilde-unsorted/01-without-spaces-trimmed": "^0 || ^1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/02-without-spaces-untrimmed": "^0 || ^1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/03-with-single-space-trimmed": "^0 || ^1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/04-with-single-space-untrimmed": "^0 || ^1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/05-with-double-space-trimmed": "^0 || ^1.2 || ~2.3.4 || ~12.3.4",
"combination-or-version-range-tilde-unsorted/06-with-double-space-untrimmed": "^0 || ^1.2 || ~2.3.4 || ~12.3.4"
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#version-range",
"value-contains-packages-and-version-constraints": {
"combination-or-version-range-wildcard/01-without-spaces-trimmed": "1.* || 2.3.*",
"combination-or-version-range-wildcard/02-without-spaces-untrimmed": "1.* || 2.3.*",
"combination-or-version-range-wildcard/03-with-single-space-trimmed": "1.* || 2.3.*",
"combination-or-version-range-wildcard/04-with-single-space-untrimmed": "1.* || 2.3.*",
"combination-or-version-range-wildcard/05-with-double-space-trimmed": "1.* || 2.3.*",
"combination-or-version-range-wildcard/06-with-double-space-untrimmed": "1.* || 2.3.*"
"combination-or-version-range-wildcard/01-without-spaces-trimmed": "^1.0 || ~2.3.0",
"combination-or-version-range-wildcard/02-without-spaces-untrimmed": "^1.0 || ~2.3.0",
"combination-or-version-range-wildcard/03-with-single-space-trimmed": "^1.0 || ~2.3.0",
"combination-or-version-range-wildcard/04-with-single-space-untrimmed": "^1.0 || ~2.3.0",
"combination-or-version-range-wildcard/05-with-double-space-trimmed": "^1.0 || ~2.3.0",
"combination-or-version-range-wildcard/06-with-double-space-untrimmed": "^1.0 || ~2.3.0"
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#tilde-version-range-",
"value-contains-packages-and-version-constraints": {
"version-range-tilde-stable/01-major-trimmed": "~1",
"version-range-tilde-stable/02-major-untrimmed": "~1",
"version-range-tilde-stable/03-major-minor-trimmed": "~1.2",
"version-range-tilde-stable/04-major-minor-untrimmed": "~1.2",
"version-range-tilde-stable/01-major-trimmed": "^1",
"version-range-tilde-stable/02-major-untrimmed": "^1",
"version-range-tilde-stable/03-major-minor-trimmed": "^1.2",
"version-range-tilde-stable/04-major-minor-untrimmed": "^1.2",
"version-range-tilde-stable/05-major-minor-patch-trimmed": "~1.2.3",
"version-range-tilde-stable/06-major-minor-patch-untrimmed": "~1.2.3"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#tilde-version-range-",
"value-contains-packages-and-version-constraints": {
"version-range-tilde-unstable/01-major-trimmed": "~0",
"version-range-tilde-unstable/02-major-untrimmed": "~0",
"version-range-tilde-unstable/03-major-minor-trimmed": "~0.1",
"version-range-tilde-unstable/04-major-minor-untrimmed": "~0.1",
"version-range-tilde-unstable/01-major-trimmed": "^0",
"version-range-tilde-unstable/02-major-untrimmed": "^0",
"version-range-tilde-unstable/03-major-minor-trimmed": "^0.1",
"version-range-tilde-unstable/04-major-minor-untrimmed": "^0.1",
"version-range-tilde-unstable/05-major-minor-patch-trimmed": "~0.1.2",
"version-range-tilde-unstable/06-major-minor-patch-untrimmed": "~0.1.2"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#wildcard-version-range-",
"value-contains-packages-and-version-constraints": {
"version-range-wildcard-stable/01-major-minor-trimmed": "1.*",
"version-range-wildcard-stable/02-major-minor-untrimmed": "1.*",
"version-range-wildcard-stable/03-major-minor-patch-trimmed": "1.2.*",
"version-range-wildcard-stable/04-major-minor-patch-untrimmed": "1.2.*"
"version-range-wildcard-stable/01-major-minor-trimmed": "^1.0",
"version-range-wildcard-stable/02-major-minor-untrimmed": "^1.0",
"version-range-wildcard-stable/03-major-minor-patch-trimmed": "~1.2.0",
"version-range-wildcard-stable/04-major-minor-patch-untrimmed": "~1.2.0"
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"homepage": "https://getcomposer.org/doc/articles/versions.md#wildcard-version-range-",
"value-contains-packages-and-version-constraints": {
"version-range-wildcard-unstable/01-major-minor-trimmed": "0.*",
"version-range-wildcard-unstable/02-major-minor-untrimmed": "0.*",
"version-range-wildcard-unstable/03-major-minor-patch-trimmed": "0.1.*",
"version-range-wildcard-unstable/04-major-minor-patch-untrimmed": "0.1.*"
"version-range-wildcard-unstable/01-major-minor-trimmed": "^0.0",
"version-range-wildcard-unstable/02-major-minor-untrimmed": "^0.0",
"version-range-wildcard-unstable/03-major-minor-patch-trimmed": "~0.1.0",
"version-range-wildcard-unstable/04-major-minor-patch-untrimmed": "~0.1.0"
}
}