@rpgm-tools/neo-angband-mod-sdk 0.16.0 → 0.17.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/dist/semver.d.ts +14 -8
- package/dist/semver.d.ts.map +1 -1
- package/dist/semver.js +55 -10
- package/dist/semver.js.map +1 -1
- package/package.json +1 -1
- package/src/semver.ts +53 -10
package/dist/semver.d.ts
CHANGED
|
@@ -18,14 +18,20 @@
|
|
|
18
18
|
* - comparator sets: `>=`, `>`, `<=`, `<`, `=`, combined with spaces and
|
|
19
19
|
* ANDed together, e.g. `>=1.0.0 <2.0.0`.
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
21
|
+
* Prerelease tags (`1.0.0-beta.2`) are ordered by the spec's rule: split on
|
|
22
|
+
* dots, compare identifier by identifier, numeric identifiers numerically and
|
|
23
|
+
* ranking below alphanumeric ones, and a longer identifier list wins a tie
|
|
24
|
+
* against its own prefix. A version with no prerelease outranks any prerelease
|
|
25
|
+
* of the same major.minor.patch.
|
|
26
|
+
*
|
|
27
|
+
* THIS USED TO BE A DOCUMENTED LIMITATION - one lexicographic string compare -
|
|
28
|
+
* and the note said pack authors needing exact prerelease ordering should not
|
|
29
|
+
* rely on it. That was honest while nothing did. Then the updater's `early`
|
|
30
|
+
* channel started naming builds `0.16.1-edge.7`, and a string compare puts
|
|
31
|
+
* `edge.9` ABOVE `edge.10`: the tenth build of the day would not be offered to
|
|
32
|
+
* anyone running the ninth, and the game would sit there reporting itself up to
|
|
33
|
+
* date. A documented limitation stops being documentation the moment something
|
|
34
|
+
* depends on it, so it is implemented rather than described.
|
|
29
35
|
*/
|
|
30
36
|
export declare class SemverError extends Error {
|
|
31
37
|
}
|
package/dist/semver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../src/semver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../src/semver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAgGzC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUjE;AAgID;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAWjE"}
|
package/dist/semver.js
CHANGED
|
@@ -18,14 +18,20 @@
|
|
|
18
18
|
* - comparator sets: `>=`, `>`, `<=`, `<`, `=`, combined with spaces and
|
|
19
19
|
* ANDed together, e.g. `>=1.0.0 <2.0.0`.
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
21
|
+
* Prerelease tags (`1.0.0-beta.2`) are ordered by the spec's rule: split on
|
|
22
|
+
* dots, compare identifier by identifier, numeric identifiers numerically and
|
|
23
|
+
* ranking below alphanumeric ones, and a longer identifier list wins a tie
|
|
24
|
+
* against its own prefix. A version with no prerelease outranks any prerelease
|
|
25
|
+
* of the same major.minor.patch.
|
|
26
|
+
*
|
|
27
|
+
* THIS USED TO BE A DOCUMENTED LIMITATION - one lexicographic string compare -
|
|
28
|
+
* and the note said pack authors needing exact prerelease ordering should not
|
|
29
|
+
* rely on it. That was honest while nothing did. Then the updater's `early`
|
|
30
|
+
* channel started naming builds `0.16.1-edge.7`, and a string compare puts
|
|
31
|
+
* `edge.9` ABOVE `edge.10`: the tenth build of the day would not be offered to
|
|
32
|
+
* anyone running the ninth, and the game would sit there reporting itself up to
|
|
33
|
+
* date. A documented limitation stops being documentation the moment something
|
|
34
|
+
* depends on it, so it is implemented rather than described.
|
|
29
35
|
*/
|
|
30
36
|
export class SemverError extends Error {
|
|
31
37
|
}
|
|
@@ -53,7 +59,46 @@ function parseVersion(s) {
|
|
|
53
59
|
}
|
|
54
60
|
return { major: p.major, minor: p.minor, patch: p.patch, prerelease: p.prerelease };
|
|
55
61
|
}
|
|
56
|
-
|
|
62
|
+
const NUMERIC_ID = /^\d+$/u;
|
|
63
|
+
/**
|
|
64
|
+
* Order two prerelease tags by semver's rule (spec item 11.4).
|
|
65
|
+
*
|
|
66
|
+
* Identifier by identifier: two numeric identifiers compare as numbers, two
|
|
67
|
+
* alphanumeric ones compare as ASCII, and a numeric identifier always ranks
|
|
68
|
+
* BELOW an alphanumeric one. Running out of identifiers first loses, so
|
|
69
|
+
* `1.0.0-alpha` precedes `1.0.0-alpha.1`.
|
|
70
|
+
*/
|
|
71
|
+
function comparePrerelease(a, b) {
|
|
72
|
+
const left = a.split(".");
|
|
73
|
+
const right = b.split(".");
|
|
74
|
+
for (let i = 0; i < Math.max(left.length, right.length); i++) {
|
|
75
|
+
const l = left[i];
|
|
76
|
+
const r = right[i];
|
|
77
|
+
/* One side ran out: the shorter list is the lower precedence. */
|
|
78
|
+
if (l === undefined)
|
|
79
|
+
return -1;
|
|
80
|
+
if (r === undefined)
|
|
81
|
+
return 1;
|
|
82
|
+
if (l === r)
|
|
83
|
+
continue;
|
|
84
|
+
const lNum = NUMERIC_ID.test(l);
|
|
85
|
+
const rNum = NUMERIC_ID.test(r);
|
|
86
|
+
/* Numeric identifiers always have lower precedence than alphanumeric ones,
|
|
87
|
+
* which is why this cannot be a string compare with a numeric special case:
|
|
88
|
+
* `beta` outranks `2`, and "2" < "beta" in ASCII only by luck of the table. */
|
|
89
|
+
if (lNum !== rNum)
|
|
90
|
+
return lNum ? -1 : 1;
|
|
91
|
+
if (lNum && rNum) {
|
|
92
|
+
/* Number(), not localeCompare: `edge.9` vs `edge.10` is the case that
|
|
93
|
+
* made this function exist, and it is the one a string compare gets
|
|
94
|
+
* backwards. Leading zeroes are not legal semver, so parsing is safe. */
|
|
95
|
+
return Number(l) < Number(r) ? -1 : 1;
|
|
96
|
+
}
|
|
97
|
+
return l < r ? -1 : 1;
|
|
98
|
+
}
|
|
99
|
+
return 0;
|
|
100
|
+
}
|
|
101
|
+
/** -1 if a < b, 0 if equal, 1 if a > b. */
|
|
57
102
|
function compareVersions(a, b) {
|
|
58
103
|
if (a.major !== b.major)
|
|
59
104
|
return a.major - b.major < 0 ? -1 : 1;
|
|
@@ -67,7 +112,7 @@ function compareVersions(a, b) {
|
|
|
67
112
|
return 1; // no prerelease outranks any prerelease
|
|
68
113
|
if (b.prerelease === null)
|
|
69
114
|
return -1;
|
|
70
|
-
return a.prerelease
|
|
115
|
+
return comparePrerelease(a.prerelease, b.prerelease);
|
|
71
116
|
}
|
|
72
117
|
/**
|
|
73
118
|
* Order two version strings: negative if `a` is older, 0 if equal, positive if
|
package/dist/semver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semver.js","sourceRoot":"","sources":["../src/semver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"semver.js","sourceRoot":"","sources":["../src/semver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rpgm-tools/neo-angband-mod-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "Pack schemas, validation, and tooling for Neo Angband mods (content packs, tile packs, scripted plugins)",
|
|
5
5
|
"license": "GPL-2.0-only",
|
|
6
6
|
"author": "neostryder (RPGM Tools)",
|
package/src/semver.ts
CHANGED
|
@@ -18,14 +18,20 @@
|
|
|
18
18
|
* - comparator sets: `>=`, `>`, `<=`, `<`, `=`, combined with spaces and
|
|
19
19
|
* ANDed together, e.g. `>=1.0.0 <2.0.0`.
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
21
|
+
* Prerelease tags (`1.0.0-beta.2`) are ordered by the spec's rule: split on
|
|
22
|
+
* dots, compare identifier by identifier, numeric identifiers numerically and
|
|
23
|
+
* ranking below alphanumeric ones, and a longer identifier list wins a tie
|
|
24
|
+
* against its own prefix. A version with no prerelease outranks any prerelease
|
|
25
|
+
* of the same major.minor.patch.
|
|
26
|
+
*
|
|
27
|
+
* THIS USED TO BE A DOCUMENTED LIMITATION - one lexicographic string compare -
|
|
28
|
+
* and the note said pack authors needing exact prerelease ordering should not
|
|
29
|
+
* rely on it. That was honest while nothing did. Then the updater's `early`
|
|
30
|
+
* channel started naming builds `0.16.1-edge.7`, and a string compare puts
|
|
31
|
+
* `edge.9` ABOVE `edge.10`: the tenth build of the day would not be offered to
|
|
32
|
+
* anyone running the ninth, and the game would sit there reporting itself up to
|
|
33
|
+
* date. A documented limitation stops being documentation the moment something
|
|
34
|
+
* depends on it, so it is implemented rather than described.
|
|
29
35
|
*/
|
|
30
36
|
|
|
31
37
|
export class SemverError extends Error {}
|
|
@@ -76,7 +82,44 @@ function parseVersion(s: string): FullVersion {
|
|
|
76
82
|
return { major: p.major, minor: p.minor, patch: p.patch, prerelease: p.prerelease };
|
|
77
83
|
}
|
|
78
84
|
|
|
79
|
-
|
|
85
|
+
const NUMERIC_ID = /^\d+$/u;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Order two prerelease tags by semver's rule (spec item 11.4).
|
|
89
|
+
*
|
|
90
|
+
* Identifier by identifier: two numeric identifiers compare as numbers, two
|
|
91
|
+
* alphanumeric ones compare as ASCII, and a numeric identifier always ranks
|
|
92
|
+
* BELOW an alphanumeric one. Running out of identifiers first loses, so
|
|
93
|
+
* `1.0.0-alpha` precedes `1.0.0-alpha.1`.
|
|
94
|
+
*/
|
|
95
|
+
function comparePrerelease(a: string, b: string): number {
|
|
96
|
+
const left = a.split(".");
|
|
97
|
+
const right = b.split(".");
|
|
98
|
+
for (let i = 0; i < Math.max(left.length, right.length); i++) {
|
|
99
|
+
const l = left[i];
|
|
100
|
+
const r = right[i];
|
|
101
|
+
/* One side ran out: the shorter list is the lower precedence. */
|
|
102
|
+
if (l === undefined) return -1;
|
|
103
|
+
if (r === undefined) return 1;
|
|
104
|
+
if (l === r) continue;
|
|
105
|
+
const lNum = NUMERIC_ID.test(l);
|
|
106
|
+
const rNum = NUMERIC_ID.test(r);
|
|
107
|
+
/* Numeric identifiers always have lower precedence than alphanumeric ones,
|
|
108
|
+
* which is why this cannot be a string compare with a numeric special case:
|
|
109
|
+
* `beta` outranks `2`, and "2" < "beta" in ASCII only by luck of the table. */
|
|
110
|
+
if (lNum !== rNum) return lNum ? -1 : 1;
|
|
111
|
+
if (lNum && rNum) {
|
|
112
|
+
/* Number(), not localeCompare: `edge.9` vs `edge.10` is the case that
|
|
113
|
+
* made this function exist, and it is the one a string compare gets
|
|
114
|
+
* backwards. Leading zeroes are not legal semver, so parsing is safe. */
|
|
115
|
+
return Number(l) < Number(r) ? -1 : 1;
|
|
116
|
+
}
|
|
117
|
+
return l < r ? -1 : 1;
|
|
118
|
+
}
|
|
119
|
+
return 0;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** -1 if a < b, 0 if equal, 1 if a > b. */
|
|
80
123
|
function compareVersions(a: FullVersion, b: FullVersion): number {
|
|
81
124
|
if (a.major !== b.major) return a.major - b.major < 0 ? -1 : 1;
|
|
82
125
|
if (a.minor !== b.minor) return a.minor - b.minor < 0 ? -1 : 1;
|
|
@@ -84,7 +127,7 @@ function compareVersions(a: FullVersion, b: FullVersion): number {
|
|
|
84
127
|
if (a.prerelease === b.prerelease) return 0;
|
|
85
128
|
if (a.prerelease === null) return 1; // no prerelease outranks any prerelease
|
|
86
129
|
if (b.prerelease === null) return -1;
|
|
87
|
-
return a.prerelease
|
|
130
|
+
return comparePrerelease(a.prerelease, b.prerelease);
|
|
88
131
|
}
|
|
89
132
|
|
|
90
133
|
/**
|