keep-a-changelog 2.3.0 → 2.5.0
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.
- package/CHANGELOG.md +33 -4
- package/README.md +23 -8
- package/esm/_dnt.shims.js +0 -1
- package/esm/bin.js +19 -20
- package/esm/deps/deno.land/std@0.205.0/semver/_shared.d.ts +42 -0
- package/esm/deps/deno.land/std@0.205.0/semver/_shared.js +230 -0
- package/esm/deps/deno.land/std@0.205.0/semver/cmp.d.ts +9 -0
- package/esm/deps/deno.land/std@0.205.0/semver/cmp.js +35 -0
- package/esm/deps/deno.land/std@0.205.0/semver/comparator_format.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/comparator_format.js +11 -0
- package/esm/deps/deno.land/std@0.205.0/semver/comparator_intersects.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/comparator_intersects.js +45 -0
- package/esm/deps/deno.land/std@0.205.0/semver/comparator_max.d.ts +9 -0
- package/esm/deps/deno.land/std@0.205.0/semver/comparator_max.js +45 -0
- package/esm/deps/deno.land/std@0.205.0/semver/comparator_min.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/comparator_min.js +32 -0
- package/esm/deps/deno.land/std@0.205.0/semver/compare.d.ts +10 -0
- package/esm/deps/deno.land/std@0.205.0/semver/compare.js +18 -0
- package/esm/deps/deno.land/std@0.205.0/semver/compare_build.d.ts +13 -0
- package/esm/deps/deno.land/std@0.205.0/semver/compare_build.js +23 -0
- package/esm/deps/deno.land/std@0.205.0/semver/constants.d.ts +42 -0
- package/esm/deps/deno.land/std@0.205.0/semver/constants.js +75 -0
- package/esm/deps/deno.land/std@0.205.0/semver/difference.d.ts +4 -0
- package/esm/deps/deno.land/std@0.205.0/semver/difference.js +26 -0
- package/esm/deps/deno.land/std@0.205.0/semver/eq.d.ts +4 -0
- package/esm/deps/deno.land/std@0.205.0/semver/eq.js +7 -0
- package/esm/deps/deno.land/std@0.205.0/semver/format.d.ts +12 -0
- package/esm/deps/deno.land/std@0.205.0/semver/format.js +54 -0
- package/esm/deps/deno.land/std@0.205.0/semver/gt.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/gt.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/gte.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/gte.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/gtr.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/gtr.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/increment.d.ts +28 -0
- package/esm/deps/deno.land/std@0.205.0/semver/increment.js +207 -0
- package/esm/deps/deno.land/std@0.205.0/semver/is_semver.d.ts +17 -0
- package/esm/deps/deno.land/std@0.205.0/semver/is_semver.js +41 -0
- package/esm/deps/deno.land/std@0.205.0/semver/is_semver_comparator.d.ts +12 -0
- package/esm/deps/deno.land/std@0.205.0/semver/is_semver_comparator.js +31 -0
- package/esm/deps/deno.land/std@0.205.0/semver/is_semver_range.d.ts +12 -0
- package/esm/deps/deno.land/std@0.205.0/semver/is_semver_range.js +22 -0
- package/esm/deps/deno.land/std@0.205.0/semver/lt.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/lt.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/lte.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/lte.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/ltr.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/ltr.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/max_satisfying.d.ts +9 -0
- package/esm/deps/deno.land/std@0.205.0/semver/max_satisfying.js +14 -0
- package/esm/deps/deno.land/std@0.205.0/semver/min_satisfying.d.ts +9 -0
- package/esm/deps/deno.land/std@0.205.0/semver/min_satisfying.js +14 -0
- package/esm/deps/deno.land/{std@0.173.0 → std@0.205.0}/semver/mod.d.ts +88 -176
- package/esm/deps/deno.land/std@0.205.0/semver/mod.js +313 -0
- package/esm/deps/deno.land/std@0.205.0/semver/neq.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/neq.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/outside.d.ts +11 -0
- package/esm/deps/deno.land/std@0.205.0/semver/outside.js +67 -0
- package/esm/deps/deno.land/std@0.205.0/semver/parse.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/parse.js +66 -0
- package/esm/deps/deno.land/std@0.205.0/semver/parse_comparator.d.ts +7 -0
- package/esm/deps/deno.land/std@0.205.0/semver/parse_comparator.js +28 -0
- package/esm/deps/deno.land/std@0.205.0/semver/parse_range.d.ts +7 -0
- package/esm/deps/deno.land/std@0.205.0/semver/parse_range.js +292 -0
- package/esm/deps/deno.land/std@0.205.0/semver/range_format.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/range_format.js +11 -0
- package/esm/deps/deno.land/std@0.205.0/semver/range_intersects.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/range_intersects.js +35 -0
- package/esm/deps/deno.land/std@0.205.0/semver/range_max.d.ts +7 -0
- package/esm/deps/deno.land/std@0.205.0/semver/range_max.js +15 -0
- package/esm/deps/deno.land/std@0.205.0/semver/range_min.d.ts +7 -0
- package/esm/deps/deno.land/std@0.205.0/semver/range_min.js +14 -0
- package/esm/deps/deno.land/std@0.205.0/semver/rcompare.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/rcompare.js +10 -0
- package/esm/deps/deno.land/std@0.205.0/semver/rsort.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/rsort.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/sort.d.ts +3 -0
- package/esm/deps/deno.land/std@0.205.0/semver/sort.js +5 -0
- package/esm/deps/deno.land/std@0.205.0/semver/test_comparator.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/test_comparator.js +10 -0
- package/esm/deps/deno.land/std@0.205.0/semver/test_range.d.ts +8 -0
- package/esm/deps/deno.land/std@0.205.0/semver/test_range.js +16 -0
- package/esm/deps/deno.land/std@0.205.0/semver/types.d.ts +44 -0
- package/esm/deps/deno.land/std@0.205.0/semver/types.js +2 -0
- package/esm/src/Changelog.d.ts +6 -2
- package/esm/src/Changelog.js +42 -4
- package/esm/src/Release.d.ts +5 -4
- package/esm/src/Release.js +21 -22
- package/esm/src/deps.d.ts +2 -1
- package/esm/src/deps.js +1 -1
- package/esm/src/settings.d.ts +17 -0
- package/esm/src/settings.js +47 -0
- package/esm/test/changelog.custom.type.md +2 -3
- package/esm/test/changelog.expected.linted.md +3 -4
- package/esm/test/changelog.expected.md +3 -4
- package/esm/test/changelog.md +3 -4
- package/esm/test/empty.expected.md +2 -2
- package/package.json +2 -2
- package/script/_dnt.shims.js +0 -1
- package/script/bin.js +22 -20
- package/script/deps/deno.land/std@0.205.0/semver/_shared.d.ts +42 -0
- package/script/deps/deno.land/std@0.205.0/semver/_shared.js +248 -0
- package/script/deps/deno.land/std@0.205.0/semver/cmp.d.ts +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/cmp.js +39 -0
- package/script/deps/deno.land/std@0.205.0/semver/comparator_format.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/comparator_format.js +15 -0
- package/script/deps/deno.land/std@0.205.0/semver/comparator_intersects.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/comparator_intersects.js +49 -0
- package/script/deps/deno.land/std@0.205.0/semver/comparator_max.d.ts +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/comparator_max.js +49 -0
- package/script/deps/deno.land/std@0.205.0/semver/comparator_min.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/comparator_min.js +36 -0
- package/script/deps/deno.land/std@0.205.0/semver/compare.d.ts +10 -0
- package/script/deps/deno.land/std@0.205.0/semver/compare.js +22 -0
- package/script/deps/deno.land/std@0.205.0/semver/compare_build.d.ts +13 -0
- package/script/deps/deno.land/std@0.205.0/semver/compare_build.js +27 -0
- package/script/deps/deno.land/std@0.205.0/semver/constants.d.ts +42 -0
- package/script/deps/deno.land/std@0.205.0/semver/constants.js +78 -0
- package/script/deps/deno.land/std@0.205.0/semver/difference.d.ts +4 -0
- package/script/deps/deno.land/std@0.205.0/semver/difference.js +30 -0
- package/script/deps/deno.land/std@0.205.0/semver/eq.d.ts +4 -0
- package/script/deps/deno.land/std@0.205.0/semver/eq.js +11 -0
- package/script/deps/deno.land/std@0.205.0/semver/format.d.ts +12 -0
- package/script/deps/deno.land/std@0.205.0/semver/format.js +58 -0
- package/script/deps/deno.land/std@0.205.0/semver/gt.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/gt.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/gte.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/gte.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/gtr.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/gtr.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/increment.d.ts +28 -0
- package/script/deps/deno.land/std@0.205.0/semver/increment.js +211 -0
- package/script/deps/deno.land/std@0.205.0/semver/is_semver.d.ts +17 -0
- package/script/deps/deno.land/std@0.205.0/semver/is_semver.js +45 -0
- package/script/deps/deno.land/std@0.205.0/semver/is_semver_comparator.d.ts +12 -0
- package/script/deps/deno.land/std@0.205.0/semver/is_semver_comparator.js +35 -0
- package/script/deps/deno.land/std@0.205.0/semver/is_semver_range.d.ts +12 -0
- package/script/deps/deno.land/std@0.205.0/semver/is_semver_range.js +26 -0
- package/script/deps/deno.land/std@0.205.0/semver/lt.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/lt.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/lte.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/lte.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/ltr.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/ltr.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/max_satisfying.d.ts +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/max_satisfying.js +18 -0
- package/script/deps/deno.land/std@0.205.0/semver/min_satisfying.d.ts +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/min_satisfying.js +18 -0
- package/script/deps/deno.land/{std@0.173.0 → std@0.205.0}/semver/mod.d.ts +88 -176
- package/script/deps/deno.land/std@0.205.0/semver/mod.js +330 -0
- package/script/deps/deno.land/std@0.205.0/semver/neq.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/neq.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/outside.d.ts +11 -0
- package/script/deps/deno.land/std@0.205.0/semver/outside.js +71 -0
- package/script/deps/deno.land/std@0.205.0/semver/parse.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/parse.js +70 -0
- package/script/deps/deno.land/std@0.205.0/semver/parse_comparator.d.ts +7 -0
- package/script/deps/deno.land/std@0.205.0/semver/parse_comparator.js +32 -0
- package/script/deps/deno.land/std@0.205.0/semver/parse_range.d.ts +7 -0
- package/script/deps/deno.land/std@0.205.0/semver/parse_range.js +296 -0
- package/script/deps/deno.land/std@0.205.0/semver/range_format.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/range_format.js +15 -0
- package/script/deps/deno.land/std@0.205.0/semver/range_intersects.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/range_intersects.js +39 -0
- package/script/deps/deno.land/std@0.205.0/semver/range_max.d.ts +7 -0
- package/script/deps/deno.land/std@0.205.0/semver/range_max.js +19 -0
- package/script/deps/deno.land/std@0.205.0/semver/range_min.d.ts +7 -0
- package/script/deps/deno.land/std@0.205.0/semver/range_min.js +18 -0
- package/script/deps/deno.land/std@0.205.0/semver/rcompare.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/rcompare.js +14 -0
- package/script/deps/deno.land/std@0.205.0/semver/rsort.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/rsort.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/sort.d.ts +3 -0
- package/script/deps/deno.land/std@0.205.0/semver/sort.js +9 -0
- package/script/deps/deno.land/std@0.205.0/semver/test_comparator.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/test_comparator.js +14 -0
- package/script/deps/deno.land/std@0.205.0/semver/test_range.d.ts +8 -0
- package/script/deps/deno.land/std@0.205.0/semver/test_range.js +20 -0
- package/script/deps/deno.land/std@0.205.0/semver/types.d.ts +44 -0
- package/script/deps/deno.land/std@0.205.0/semver/types.js +3 -0
- package/script/src/Changelog.d.ts +6 -2
- package/script/src/Changelog.js +41 -3
- package/script/src/Release.d.ts +5 -4
- package/script/src/Release.js +20 -21
- package/script/src/deps.d.ts +2 -1
- package/script/src/deps.js +5 -6
- package/script/src/settings.d.ts +17 -0
- package/script/src/settings.js +51 -0
- package/script/test/changelog.custom.type.md +2 -3
- package/script/test/changelog.expected.linted.md +3 -4
- package/script/test/changelog.expected.md +3 -4
- package/script/test/changelog.md +3 -4
- package/script/test/empty.expected.md +2 -2
- package/esm/_dnt.test_shims.d.ts +0 -5
- package/esm/deps/deno.land/std@0.133.0/fmt/colors.d.ts +0 -270
- package/esm/deps/deno.land/std@0.133.0/testing/_diff.d.ts +0 -23
- package/esm/deps/deno.land/std@0.133.0/testing/asserts.d.ts +0 -167
- package/esm/deps/deno.land/std@0.173.0/semver/mod.js +0 -1420
- package/esm/test/Change.test.d.ts +0 -1
- package/esm/test/deps.d.ts +0 -1
- package/esm/test/fixture/CustomRelease.d.ts +0 -8
- package/esm/test/parser.test.d.ts +0 -1
- package/esm/test/test.d.ts +0 -1
- package/script/_dnt.test_shims.d.ts +0 -5
- package/script/deps/deno.land/std@0.133.0/fmt/colors.d.ts +0 -270
- package/script/deps/deno.land/std@0.133.0/testing/_diff.d.ts +0 -23
- package/script/deps/deno.land/std@0.133.0/testing/asserts.d.ts +0 -167
- package/script/deps/deno.land/std@0.173.0/semver/mod.js +0 -1458
- package/script/test/Change.test.d.ts +0 -1
- package/script/test/deps.d.ts +0 -1
- package/script/test/fixture/CustomRelease.d.ts +0 -8
- package/script/test/parser.test.d.ts +0 -1
- package/script/test/test.d.ts +0 -1
package/esm/src/Release.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { compare, format, parse } from "./deps.js";
|
|
2
2
|
import Change from "./Change.js";
|
|
3
3
|
export default class Release {
|
|
4
4
|
constructor(version, date, description = "") {
|
|
@@ -8,7 +8,7 @@ export default class Release {
|
|
|
8
8
|
writable: true,
|
|
9
9
|
value: void 0
|
|
10
10
|
});
|
|
11
|
-
Object.defineProperty(this, "
|
|
11
|
+
Object.defineProperty(this, "parsedVersion", {
|
|
12
12
|
enumerable: true,
|
|
13
13
|
configurable: true,
|
|
14
14
|
writable: true,
|
|
@@ -50,11 +50,14 @@ export default class Release {
|
|
|
50
50
|
["security", []],
|
|
51
51
|
]);
|
|
52
52
|
}
|
|
53
|
+
get version() {
|
|
54
|
+
return this.parsedVersion ? format(this.parsedVersion) : undefined;
|
|
55
|
+
}
|
|
53
56
|
compare(release) {
|
|
54
|
-
if (!this.
|
|
57
|
+
if (!this.parsedVersion && release.parsedVersion) {
|
|
55
58
|
return -1;
|
|
56
59
|
}
|
|
57
|
-
if (!release.
|
|
60
|
+
if (!release.parsedVersion) {
|
|
58
61
|
return 1;
|
|
59
62
|
}
|
|
60
63
|
if (!this.date && release.date) {
|
|
@@ -63,8 +66,8 @@ export default class Release {
|
|
|
63
66
|
if (!release.date) {
|
|
64
67
|
return 1;
|
|
65
68
|
}
|
|
66
|
-
if (this.
|
|
67
|
-
return -this.
|
|
69
|
+
if (this.parsedVersion && release.parsedVersion) {
|
|
70
|
+
return -compare(this.parsedVersion, release.parsedVersion);
|
|
68
71
|
}
|
|
69
72
|
return 0;
|
|
70
73
|
}
|
|
@@ -76,9 +79,9 @@ export default class Release {
|
|
|
76
79
|
}
|
|
77
80
|
setVersion(version) {
|
|
78
81
|
if (typeof version === "string") {
|
|
79
|
-
version =
|
|
82
|
+
version = parse(version);
|
|
80
83
|
}
|
|
81
|
-
this.
|
|
84
|
+
this.parsedVersion = version;
|
|
82
85
|
//Re-sort the releases of the parent changelog
|
|
83
86
|
if (this.changelog) {
|
|
84
87
|
this.changelog.sortReleases();
|
|
@@ -126,12 +129,13 @@ export default class Release {
|
|
|
126
129
|
let t = [];
|
|
127
130
|
const hasCompareLink = this.getCompareLink(changelog) !== undefined;
|
|
128
131
|
const yanked = this.yanked ? " [YANKED]" : "";
|
|
129
|
-
|
|
132
|
+
const { version } = this;
|
|
133
|
+
if (version) {
|
|
130
134
|
if (hasCompareLink) {
|
|
131
|
-
t.push(`## [${
|
|
135
|
+
t.push(`## [${version}] - ${formatDate(this.date)}${yanked}`);
|
|
132
136
|
}
|
|
133
137
|
else {
|
|
134
|
-
t.push(`## ${
|
|
138
|
+
t.push(`## ${version} - ${formatDate(this.date)}${yanked}`);
|
|
135
139
|
}
|
|
136
140
|
}
|
|
137
141
|
else {
|
|
@@ -175,19 +179,14 @@ export default class Release {
|
|
|
175
179
|
++offset;
|
|
176
180
|
previous = changelog.releases[index + offset];
|
|
177
181
|
}
|
|
178
|
-
if (!previous) {
|
|
179
|
-
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
return `[${this.version}]: ${changelog.url}/releases/tag/${changelog.tagName(this)}`;
|
|
183
|
-
}
|
|
184
|
-
if (!this.version) {
|
|
185
|
-
return `[Unreleased]: ${changelog.url}/compare/${changelog.tagName(previous)}...${changelog.head}`;
|
|
182
|
+
if (!previous && (!this.version || !this.date)) {
|
|
183
|
+
return;
|
|
186
184
|
}
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
const compareLink = changelog.compareLink(previous, this);
|
|
186
|
+
if (!compareLink) {
|
|
187
|
+
return;
|
|
189
188
|
}
|
|
190
|
-
return `[${this.version}]: ${
|
|
189
|
+
return `[${this.version || "Unreleased"}]: ${compareLink}`;
|
|
191
190
|
}
|
|
192
191
|
getLinks(changelog) {
|
|
193
192
|
const links = [];
|
package/esm/src/deps.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { compare, eq, format, parse, } from "../deps/deno.land/std@0.205.0/semver/mod.js";
|
|
2
|
+
export type { SemVer } from "../deps/deno.land/std@0.205.0/semver/mod.js";
|
package/esm/src/deps.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { compare, eq, format, parse, } from "../deps/deno.land/std@0.205.0/semver/mod.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Temporary URLPattern shim
|
|
3
|
+
* @see https://github.com/denoland/dnt/issues/336
|
|
4
|
+
*/
|
|
5
|
+
declare class URLPatternShim {
|
|
6
|
+
private readonly pattern;
|
|
7
|
+
constructor(pattern: string | RegExp);
|
|
8
|
+
test(url: string): boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface Settings {
|
|
11
|
+
pattern: URLPatternShim;
|
|
12
|
+
tagLink: (url: string, tag: string, previous?: string) => string;
|
|
13
|
+
head: string;
|
|
14
|
+
}
|
|
15
|
+
export default function getSettingsForURL(url: string): Settings | undefined;
|
|
16
|
+
export declare const settings: Settings[];
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Temporary URLPattern shim
|
|
3
|
+
* @see https://github.com/denoland/dnt/issues/336
|
|
4
|
+
*/
|
|
5
|
+
class URLPatternShim {
|
|
6
|
+
constructor(pattern) {
|
|
7
|
+
Object.defineProperty(this, "pattern", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
configurable: true,
|
|
10
|
+
writable: true,
|
|
11
|
+
value: void 0
|
|
12
|
+
});
|
|
13
|
+
if (typeof pattern === "string") {
|
|
14
|
+
pattern = pattern.replace(/\*/g, ".*");
|
|
15
|
+
pattern = new RegExp(`^${pattern}$`);
|
|
16
|
+
}
|
|
17
|
+
this.pattern = pattern;
|
|
18
|
+
}
|
|
19
|
+
test(url) {
|
|
20
|
+
return this.pattern.test(url);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export default function getSettingsForURL(url) {
|
|
24
|
+
return settings.find((settings) => settings.pattern.test(url));
|
|
25
|
+
}
|
|
26
|
+
export const settings = [
|
|
27
|
+
{
|
|
28
|
+
pattern: new URLPatternShim("https://github.com/*"),
|
|
29
|
+
head: "HEAD",
|
|
30
|
+
tagLink(url, tag, previous) {
|
|
31
|
+
if (!previous) {
|
|
32
|
+
return `${url}/releases/tag/${tag}`;
|
|
33
|
+
}
|
|
34
|
+
return `${url}/compare/${previous}...${tag}`;
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
pattern: new URLPatternShim("https://gitlab.*/*"),
|
|
39
|
+
head: "master",
|
|
40
|
+
tagLink(url, tag, previous) {
|
|
41
|
+
if (!previous) {
|
|
42
|
+
return `${url}/-/tags/${tag}`;
|
|
43
|
+
}
|
|
44
|
+
return `${url}/-/compare/${previous}...${tag}`;
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
];
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# Changelog - demo
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
-
The format is based on [Keep a Changelog](
|
|
5
|
-
and this project adheres to
|
|
6
|
-
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/)
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
7
6
|
|
|
8
7
|
## [Unreleased]
|
|
9
8
|
### Maintenance
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
The format is based on [Keep a Changelog](
|
|
6
|
-
and this project adheres to
|
|
7
|
-
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/)
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
8
7
|
|
|
9
8
|
## [Unreleased] [YANKED]
|
|
10
9
|
|
|
@@ -96,7 +95,7 @@ This is a brand new releases with:
|
|
|
96
95
|
### Changed
|
|
97
96
|
|
|
98
97
|
- Improve argument against commit logs.
|
|
99
|
-
- Start following [SemVer](
|
|
98
|
+
- Start following [SemVer](https://semver.org) properly.
|
|
100
99
|
|
|
101
100
|
## [0.0.8] - 2015-02-17
|
|
102
101
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# Changelog - demo
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
-
The format is based on [Keep a Changelog](
|
|
5
|
-
and this project adheres to
|
|
6
|
-
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/)
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
7
6
|
|
|
8
7
|
## [Unreleased] [YANKED]
|
|
9
8
|
This is a brand new releases with:
|
|
@@ -80,7 +79,7 @@ This is a brand new releases with:
|
|
|
80
79
|
|
|
81
80
|
### Changed
|
|
82
81
|
- Improve argument against commit logs.
|
|
83
|
-
- Start following [SemVer](
|
|
82
|
+
- Start following [SemVer](https://semver.org) properly.
|
|
84
83
|
|
|
85
84
|
## [0.0.8] - 2015-02-17
|
|
86
85
|
### Changed
|
package/esm/test/changelog.md
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
The format is based on [Keep a Changelog](
|
|
6
|
-
and this project adheres to
|
|
7
|
-
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/)
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
8
7
|
|
|
9
8
|
## [Unreleased] [Yanked]
|
|
10
9
|
This is a brand new releases with:
|
|
@@ -97,7 +96,7 @@ This is a brand new releases with:
|
|
|
97
96
|
### Changed
|
|
98
97
|
|
|
99
98
|
- Improve argument against commit logs.
|
|
100
|
-
- Start following [SemVer](
|
|
99
|
+
- Start following [SemVer](https://semver.org) properly.
|
|
101
100
|
|
|
102
101
|
## [0.0.8] - 2015-02-17
|
|
103
102
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
-
The format is based on [Keep a Changelog](
|
|
5
|
-
and this project adheres to [Semantic Versioning](
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/)
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
package/package.json
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"changelog": "./esm/bin.js"
|
|
6
6
|
},
|
|
7
7
|
"name": "keep-a-changelog",
|
|
8
|
-
"version": "2.
|
|
9
|
-
"description": "Node package to parse and generate changelogs following the [keepachangelog](
|
|
8
|
+
"version": "2.5.0",
|
|
9
|
+
"description": "Node package to parse and generate changelogs following the [keepachangelog](https://keepachangelog.com/) format.",
|
|
10
10
|
"homepage": "https://github.com/oscarotero/keep-a-changelog#readme",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"keywords": [
|
package/script/_dnt.shims.js
CHANGED
|
@@ -8,7 +8,6 @@ const dntGlobals = {
|
|
|
8
8
|
Deno: shim_deno_1.Deno,
|
|
9
9
|
};
|
|
10
10
|
exports.dntGlobalThis = createMergeProxy(globalThis, dntGlobals);
|
|
11
|
-
// deno-lint-ignore ban-types
|
|
12
11
|
function createMergeProxy(baseObj, extObj) {
|
|
13
12
|
return new Proxy(baseObj, {
|
|
14
13
|
get(_target, prop, _receiver) {
|
package/script/bin.js
CHANGED
|
@@ -23,6 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
__setModuleDefault(result, mod);
|
|
24
24
|
return result;
|
|
25
25
|
};
|
|
26
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
|
+
};
|
|
26
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
30
|
require("./_dnt.polyfills.js");
|
|
28
31
|
const dntShim = __importStar(require("./_dnt.shims.js"));
|
|
@@ -30,6 +33,7 @@ const mod_js_1 = require("./deps/deno.land/std@0.189.0/path/mod.js");
|
|
|
30
33
|
const mod_js_2 = require("./mod.js");
|
|
31
34
|
const mod_js_3 = require("./deps/deno.land/std@0.189.0/flags/mod.js");
|
|
32
35
|
const mod_js_4 = require("./deps/deno.land/x/ini@v2.1.0/mod.js");
|
|
36
|
+
const settings_js_1 = __importDefault(require("./src/settings.js"));
|
|
33
37
|
const argv = (0, mod_js_3.parse)(dntShim.Deno.args, {
|
|
34
38
|
default: {
|
|
35
39
|
file: "CHANGELOG.md",
|
|
@@ -39,8 +43,9 @@ const argv = (0, mod_js_3.parse)(dntShim.Deno.args, {
|
|
|
39
43
|
url: null,
|
|
40
44
|
https: true,
|
|
41
45
|
quiet: false,
|
|
46
|
+
head: null,
|
|
42
47
|
},
|
|
43
|
-
string: ["file", "format", "url"],
|
|
48
|
+
string: ["file", "format", "url", "head"],
|
|
44
49
|
boolean: ["https", "init", "latest-release", "quiet"],
|
|
45
50
|
});
|
|
46
51
|
const file = (0, mod_js_1.join)(dntShim.Deno.cwd(), argv.file);
|
|
@@ -85,21 +90,6 @@ try {
|
|
|
85
90
|
const version = typeof argv.create === "string" ? argv.create : undefined;
|
|
86
91
|
changelog.addRelease(new mod_js_2.Release(version));
|
|
87
92
|
}
|
|
88
|
-
if (!changelog.url) {
|
|
89
|
-
if (argv.url) {
|
|
90
|
-
changelog.url = argv.url;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
const url = getRemoteUrl(argv.https);
|
|
94
|
-
if (url) {
|
|
95
|
-
changelog.url = url;
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
console.error(red('Please, set the repository url with --url="https://github.com/username/repository"'));
|
|
99
|
-
dntShim.Deno.exit(1);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
93
|
save(file, changelog);
|
|
104
94
|
}
|
|
105
95
|
catch (err) {
|
|
@@ -109,9 +99,20 @@ catch (err) {
|
|
|
109
99
|
}
|
|
110
100
|
}
|
|
111
101
|
function save(file, changelog, isNew = false) {
|
|
112
|
-
|
|
113
|
-
if (url
|
|
114
|
-
|
|
102
|
+
changelog.url = argv.url || changelog.url || getRemoteUrl(argv.https);
|
|
103
|
+
if (!changelog.url) {
|
|
104
|
+
console.error(red('Please, set the repository url with --url="https://github.com/username/repository"'));
|
|
105
|
+
changelog.url = "https://example.com";
|
|
106
|
+
}
|
|
107
|
+
if (changelog.url) {
|
|
108
|
+
const settings = (0, settings_js_1.default)(changelog.url);
|
|
109
|
+
if (settings) {
|
|
110
|
+
changelog.head = settings.head;
|
|
111
|
+
changelog.tagLinkBuilder = settings.tagLink;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (argv.head) {
|
|
115
|
+
changelog.head = argv.head;
|
|
115
116
|
}
|
|
116
117
|
dntShim.Deno.writeTextFileSync(file, changelog.toString());
|
|
117
118
|
if (isNew) {
|
|
@@ -140,7 +141,8 @@ function getRemoteUrl(https = true) {
|
|
|
140
141
|
if (https) {
|
|
141
142
|
remoteUrl.protocol = "https:";
|
|
142
143
|
}
|
|
143
|
-
|
|
144
|
+
// remove trailing slashes
|
|
145
|
+
return remoteUrl.href.replace(/\/+$/, "");
|
|
144
146
|
}
|
|
145
147
|
catch (err) {
|
|
146
148
|
console.error(red(err.message));
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Operator } from "./types.js";
|
|
2
|
+
export declare function compareNumber(a: number, b: number): 1 | 0 | -1;
|
|
3
|
+
export declare function checkIdentifier(v1: ReadonlyArray<string | number>, v2: ReadonlyArray<string | number>): 1 | 0 | -1;
|
|
4
|
+
export declare function compareIdentifier(v1: ReadonlyArray<string | number>, v2: ReadonlyArray<string | number>): 1 | 0 | -1;
|
|
5
|
+
declare const re: RegExp[];
|
|
6
|
+
declare const src: string[];
|
|
7
|
+
declare const NUMERICIDENTIFIER: number;
|
|
8
|
+
declare const FULL: number;
|
|
9
|
+
declare const XRANGE: number;
|
|
10
|
+
declare const TILDE: number;
|
|
11
|
+
declare const CARET: number;
|
|
12
|
+
declare const COMPARATOR: number;
|
|
13
|
+
declare const HYPHENRANGE: number;
|
|
14
|
+
declare const STAR: number;
|
|
15
|
+
/**
|
|
16
|
+
* Returns true if the value is a valid SemVer number.
|
|
17
|
+
*
|
|
18
|
+
* Must be a number. Must not be NaN. Can be positive or negative infinity.
|
|
19
|
+
* Can be between 0 and MAX_SAFE_INTEGER.
|
|
20
|
+
* @param value The value to check
|
|
21
|
+
* @returns True if its a valid semver number
|
|
22
|
+
*/
|
|
23
|
+
export declare function isValidNumber(value: unknown): value is number;
|
|
24
|
+
export declare const MAX_LENGTH = 256;
|
|
25
|
+
/**
|
|
26
|
+
* Returns true if the value is a valid semver pre-release or build identifier.
|
|
27
|
+
*
|
|
28
|
+
* Must be a string. Must be between 1 and 256 characters long. Must match
|
|
29
|
+
* the regular expression /[0-9A-Za-z-]+/.
|
|
30
|
+
* @param value The value to check
|
|
31
|
+
* @returns True if the value is a valid semver string.
|
|
32
|
+
*/
|
|
33
|
+
export declare function isValidString(value: unknown): value is string;
|
|
34
|
+
/**
|
|
35
|
+
* Checks to see if the value is a valid Operator string.
|
|
36
|
+
*
|
|
37
|
+
* Adds a type assertion if true.
|
|
38
|
+
* @param value The value to check
|
|
39
|
+
* @returns True if the value is a valid Operator string otherwise false.
|
|
40
|
+
*/
|
|
41
|
+
export declare function isValidOperator(value: unknown): value is Operator;
|
|
42
|
+
export { CARET, COMPARATOR, FULL, HYPHENRANGE, NUMERICIDENTIFIER, re, src, STAR, TILDE, XRANGE, };
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.XRANGE = exports.TILDE = exports.STAR = exports.src = exports.re = exports.NUMERICIDENTIFIER = exports.HYPHENRANGE = exports.FULL = exports.COMPARATOR = exports.CARET = exports.isValidOperator = exports.isValidString = exports.MAX_LENGTH = exports.isValidNumber = exports.compareIdentifier = exports.checkIdentifier = exports.compareNumber = void 0;
|
|
5
|
+
function compareNumber(a, b) {
|
|
6
|
+
if (isNaN(a) || isNaN(b)) {
|
|
7
|
+
throw new Error("Comparison against non-numbers");
|
|
8
|
+
}
|
|
9
|
+
return a === b ? 0 : a < b ? -1 : 1;
|
|
10
|
+
}
|
|
11
|
+
exports.compareNumber = compareNumber;
|
|
12
|
+
function checkIdentifier(v1, v2) {
|
|
13
|
+
// NOT having a prerelease is > having one
|
|
14
|
+
// But NOT having a build is < having one
|
|
15
|
+
if (v1.length && !v2.length) {
|
|
16
|
+
return -1;
|
|
17
|
+
}
|
|
18
|
+
else if (!v1.length && v2.length) {
|
|
19
|
+
return 1;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.checkIdentifier = checkIdentifier;
|
|
26
|
+
function compareIdentifier(v1, v2) {
|
|
27
|
+
let i = 0;
|
|
28
|
+
do {
|
|
29
|
+
const a = v1[i];
|
|
30
|
+
const b = v2[i];
|
|
31
|
+
if (a === undefined && b === undefined) {
|
|
32
|
+
// same length is equal
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
else if (b === undefined) {
|
|
36
|
+
// longer > shorter
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
else if (a === undefined) {
|
|
40
|
+
// shorter < longer
|
|
41
|
+
return -1;
|
|
42
|
+
}
|
|
43
|
+
else if (typeof a === "string" && typeof b === "number") {
|
|
44
|
+
// string > number
|
|
45
|
+
return 1;
|
|
46
|
+
}
|
|
47
|
+
else if (typeof a === "number" && typeof b === "string") {
|
|
48
|
+
// number < string
|
|
49
|
+
return -1;
|
|
50
|
+
}
|
|
51
|
+
else if (a < b) {
|
|
52
|
+
return -1;
|
|
53
|
+
}
|
|
54
|
+
else if (a > b) {
|
|
55
|
+
return 1;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// If they're equal, continue comparing segments.
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
} while (++i);
|
|
62
|
+
// It can't ever reach here, but typescript doesn't realize that so
|
|
63
|
+
// add this line so the return type is inferred correctly.
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
exports.compareIdentifier = compareIdentifier;
|
|
67
|
+
// The actual regexps
|
|
68
|
+
const re = [];
|
|
69
|
+
exports.re = re;
|
|
70
|
+
const src = [];
|
|
71
|
+
exports.src = src;
|
|
72
|
+
let R = 0;
|
|
73
|
+
// The following Regular Expressions can be used for tokenizing,
|
|
74
|
+
// validating, and parsing SemVer version strings.
|
|
75
|
+
// ## Numeric Identifier
|
|
76
|
+
// A single `0`, or a non-zero digit followed by zero or more digits.
|
|
77
|
+
const NUMERICIDENTIFIER = R++;
|
|
78
|
+
exports.NUMERICIDENTIFIER = NUMERICIDENTIFIER;
|
|
79
|
+
src[NUMERICIDENTIFIER] = "0|[1-9]\\d*";
|
|
80
|
+
// ## Non-numeric Identifier
|
|
81
|
+
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
|
82
|
+
// more letters, digits, or hyphens.
|
|
83
|
+
const NONNUMERICIDENTIFIER = R++;
|
|
84
|
+
src[NONNUMERICIDENTIFIER] = "\\d*[a-zA-Z-][a-zA-Z0-9-]*";
|
|
85
|
+
// ## Main Version
|
|
86
|
+
// Three dot-separated numeric identifiers.
|
|
87
|
+
const MAINVERSION = R++;
|
|
88
|
+
const nid = src[NUMERICIDENTIFIER];
|
|
89
|
+
src[MAINVERSION] = `(${nid})\\.(${nid})\\.(${nid})`;
|
|
90
|
+
// ## Pre-release Version Identifier
|
|
91
|
+
// A numeric identifier, or a non-numeric identifier.
|
|
92
|
+
const PRERELEASEIDENTIFIER = R++;
|
|
93
|
+
src[PRERELEASEIDENTIFIER] = "(?:" + src[NUMERICIDENTIFIER] + "|" +
|
|
94
|
+
src[NONNUMERICIDENTIFIER] + ")";
|
|
95
|
+
// ## Pre-release Version
|
|
96
|
+
// Hyphen, followed by one or more dot-separated pre-release version
|
|
97
|
+
// identifiers.
|
|
98
|
+
const PRERELEASE = R++;
|
|
99
|
+
src[PRERELEASE] = "(?:-(" +
|
|
100
|
+
src[PRERELEASEIDENTIFIER] +
|
|
101
|
+
"(?:\\." +
|
|
102
|
+
src[PRERELEASEIDENTIFIER] +
|
|
103
|
+
")*))";
|
|
104
|
+
// ## Build Metadata Identifier
|
|
105
|
+
// Any combination of digits, letters, or hyphens.
|
|
106
|
+
const BUILDIDENTIFIER = R++;
|
|
107
|
+
src[BUILDIDENTIFIER] = "[0-9A-Za-z-]+";
|
|
108
|
+
// ## Build Metadata
|
|
109
|
+
// Plus sign, followed by one or more period-separated build metadata
|
|
110
|
+
// identifiers.
|
|
111
|
+
const BUILD = R++;
|
|
112
|
+
src[BUILD] = "(?:\\+(" + src[BUILDIDENTIFIER] + "(?:\\." +
|
|
113
|
+
src[BUILDIDENTIFIER] + ")*))";
|
|
114
|
+
// ## Full Version String
|
|
115
|
+
// A main version, followed optionally by a pre-release version and
|
|
116
|
+
// build metadata.
|
|
117
|
+
// Note that the only major, minor, patch, and pre-release sections of
|
|
118
|
+
// the version string are capturing groups. The build metadata is not a
|
|
119
|
+
// capturing group, because it should not ever be used in version
|
|
120
|
+
// comparison.
|
|
121
|
+
const FULL = R++;
|
|
122
|
+
exports.FULL = FULL;
|
|
123
|
+
const FULLPLAIN = "v?" + src[MAINVERSION] + src[PRERELEASE] + "?" + src[BUILD] +
|
|
124
|
+
"?";
|
|
125
|
+
src[FULL] = "^" + FULLPLAIN + "$";
|
|
126
|
+
const GTLT = R++;
|
|
127
|
+
src[GTLT] = "((?:<|>)?=?)";
|
|
128
|
+
// Something like "2.*" or "1.2.x".
|
|
129
|
+
// Note that "x.x" is a valid xRange identifier, meaning "any version"
|
|
130
|
+
// Only the first item is strictly required.
|
|
131
|
+
const XRANGEIDENTIFIER = R++;
|
|
132
|
+
src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + "|x|X|\\*";
|
|
133
|
+
const XRANGEPLAIN = R++;
|
|
134
|
+
src[XRANGEPLAIN] = "[v=\\s]*(" +
|
|
135
|
+
src[XRANGEIDENTIFIER] +
|
|
136
|
+
")" +
|
|
137
|
+
"(?:\\.(" +
|
|
138
|
+
src[XRANGEIDENTIFIER] +
|
|
139
|
+
")" +
|
|
140
|
+
"(?:\\.(" +
|
|
141
|
+
src[XRANGEIDENTIFIER] +
|
|
142
|
+
")" +
|
|
143
|
+
"(?:" +
|
|
144
|
+
src[PRERELEASE] +
|
|
145
|
+
")?" +
|
|
146
|
+
src[BUILD] +
|
|
147
|
+
"?" +
|
|
148
|
+
")?)?";
|
|
149
|
+
const XRANGE = R++;
|
|
150
|
+
exports.XRANGE = XRANGE;
|
|
151
|
+
src[XRANGE] = "^" + src[GTLT] + "\\s*" + src[XRANGEPLAIN] + "$";
|
|
152
|
+
// Tilde ranges.
|
|
153
|
+
// Meaning is "reasonably at or greater than"
|
|
154
|
+
const LONETILDE = R++;
|
|
155
|
+
src[LONETILDE] = "(?:~>?)";
|
|
156
|
+
const TILDE = R++;
|
|
157
|
+
exports.TILDE = TILDE;
|
|
158
|
+
src[TILDE] = "^" + src[LONETILDE] + src[XRANGEPLAIN] + "$";
|
|
159
|
+
// Caret ranges.
|
|
160
|
+
// Meaning is "at least and backwards compatible with"
|
|
161
|
+
const LONECARET = R++;
|
|
162
|
+
src[LONECARET] = "(?:\\^)";
|
|
163
|
+
const CARET = R++;
|
|
164
|
+
exports.CARET = CARET;
|
|
165
|
+
src[CARET] = "^" + src[LONECARET] + src[XRANGEPLAIN] + "$";
|
|
166
|
+
// A simple gt/lt/eq thing, or just "" to indicate "any version"
|
|
167
|
+
const COMPARATOR = R++;
|
|
168
|
+
exports.COMPARATOR = COMPARATOR;
|
|
169
|
+
src[COMPARATOR] = "^" + src[GTLT] + "\\s*(" + FULLPLAIN + ")$|^$";
|
|
170
|
+
// Something like `1.2.3 - 1.2.4`
|
|
171
|
+
const HYPHENRANGE = R++;
|
|
172
|
+
exports.HYPHENRANGE = HYPHENRANGE;
|
|
173
|
+
src[HYPHENRANGE] = "^\\s*(" +
|
|
174
|
+
src[XRANGEPLAIN] +
|
|
175
|
+
")" +
|
|
176
|
+
"\\s+-\\s+" +
|
|
177
|
+
"(" +
|
|
178
|
+
src[XRANGEPLAIN] +
|
|
179
|
+
")" +
|
|
180
|
+
"\\s*$";
|
|
181
|
+
// Star ranges basically just allow anything at all.
|
|
182
|
+
const STAR = R++;
|
|
183
|
+
exports.STAR = STAR;
|
|
184
|
+
src[STAR] = "(<|>)?=?\\s*\\*";
|
|
185
|
+
// Compile to actual regexp objects.
|
|
186
|
+
// All are flag-free, unless they were created above with a flag.
|
|
187
|
+
for (let i = 0; i < R; i++) {
|
|
188
|
+
if (!re[i]) {
|
|
189
|
+
re[i] = new RegExp(src[i]);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Returns true if the value is a valid SemVer number.
|
|
194
|
+
*
|
|
195
|
+
* Must be a number. Must not be NaN. Can be positive or negative infinity.
|
|
196
|
+
* Can be between 0 and MAX_SAFE_INTEGER.
|
|
197
|
+
* @param value The value to check
|
|
198
|
+
* @returns True if its a valid semver number
|
|
199
|
+
*/
|
|
200
|
+
function isValidNumber(value) {
|
|
201
|
+
return (typeof value === "number" &&
|
|
202
|
+
!Number.isNaN(value) && (!Number.isFinite(value) ||
|
|
203
|
+
(0 <= value && value <= Number.MAX_SAFE_INTEGER)));
|
|
204
|
+
}
|
|
205
|
+
exports.isValidNumber = isValidNumber;
|
|
206
|
+
exports.MAX_LENGTH = 256;
|
|
207
|
+
/**
|
|
208
|
+
* Returns true if the value is a valid semver pre-release or build identifier.
|
|
209
|
+
*
|
|
210
|
+
* Must be a string. Must be between 1 and 256 characters long. Must match
|
|
211
|
+
* the regular expression /[0-9A-Za-z-]+/.
|
|
212
|
+
* @param value The value to check
|
|
213
|
+
* @returns True if the value is a valid semver string.
|
|
214
|
+
*/
|
|
215
|
+
function isValidString(value) {
|
|
216
|
+
return (typeof value === "string" &&
|
|
217
|
+
value.length > 0 &&
|
|
218
|
+
value.length <= exports.MAX_LENGTH &&
|
|
219
|
+
!!value.match(/[0-9A-Za-z-]+/));
|
|
220
|
+
}
|
|
221
|
+
exports.isValidString = isValidString;
|
|
222
|
+
/**
|
|
223
|
+
* Checks to see if the value is a valid Operator string.
|
|
224
|
+
*
|
|
225
|
+
* Adds a type assertion if true.
|
|
226
|
+
* @param value The value to check
|
|
227
|
+
* @returns True if the value is a valid Operator string otherwise false.
|
|
228
|
+
*/
|
|
229
|
+
function isValidOperator(value) {
|
|
230
|
+
if (typeof value !== "string")
|
|
231
|
+
return false;
|
|
232
|
+
switch (value) {
|
|
233
|
+
case "":
|
|
234
|
+
case "=":
|
|
235
|
+
case "==":
|
|
236
|
+
case "===":
|
|
237
|
+
case "!==":
|
|
238
|
+
case "!=":
|
|
239
|
+
case ">":
|
|
240
|
+
case ">=":
|
|
241
|
+
case "<":
|
|
242
|
+
case "<=":
|
|
243
|
+
return true;
|
|
244
|
+
default:
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.isValidOperator = isValidOperator;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Operator, SemVer } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Do a comparison of two semantic version objects based on the given operator
|
|
4
|
+
* @param s0 The left side of the comparison
|
|
5
|
+
* @param operator The operator to use for the comparison
|
|
6
|
+
* @param s1 The right side of the comparison
|
|
7
|
+
* @returns True or false based on the operator
|
|
8
|
+
*/
|
|
9
|
+
export declare function cmp(s0: SemVer, operator: Operator, s1: SemVer): boolean;
|