@songsid/agend 2.1.11-beta.2 → 2.1.11-beta.3
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/cli.js +27 -6
- package/dist/cli.js.map +1 -1
- package/dist/fleet-manager.js +9 -5
- package/dist/fleet-manager.js.map +1 -1
- package/dist/locale.js +6 -4
- package/dist/locale.js.map +1 -1
- package/dist/topic-commands.js +3 -2
- package/dist/topic-commands.js.map +1 -1
- package/dist/update-check.d.ts +40 -2
- package/dist/update-check.js +101 -3
- package/dist/update-check.js.map +1 -1
- package/package.json +1 -1
package/dist/update-check.js
CHANGED
|
@@ -1,7 +1,105 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/**
|
|
3
|
+
* What a chat `/update` (Discord slash or Telegram) runs: no channel flag, ever.
|
|
4
|
+
* The installed CLI decides from its own version (getUpdateSelector), so the
|
|
5
|
+
* caller's view of "which version am I" cannot send a beta install to @latest.
|
|
6
|
+
*/
|
|
7
|
+
export const UPDATE_COMMAND = "agend update";
|
|
8
|
+
/**
|
|
9
|
+
* SemVer 2.0.0, strictly (https://semver.org/): numeric identifiers without
|
|
10
|
+
* leading zeros, alphanumeric prerelease identifiers containing a non-digit,
|
|
11
|
+
* no empty identifiers. A leading `v` and surrounding space are tolerated, as
|
|
12
|
+
* npm prints them.
|
|
13
|
+
*/
|
|
14
|
+
const NUM = "(?:0|[1-9]\\d*)";
|
|
15
|
+
const PRE_ID = `(?:${NUM}|\\d*[A-Za-z-][0-9A-Za-z-]*)`;
|
|
16
|
+
const BUILD_ID = "[0-9A-Za-z-]+";
|
|
17
|
+
const SEMVER = new RegExp(`^v?(${NUM})\\.(${NUM})\\.(${NUM})(?:-(${PRE_ID}(?:\\.${PRE_ID})*))?(?:\\+${BUILD_ID}(?:\\.${BUILD_ID})*)?$`);
|
|
18
|
+
function parseSemver(version) {
|
|
19
|
+
const m = SEMVER.exec(version.trim());
|
|
20
|
+
if (!m)
|
|
21
|
+
return null;
|
|
22
|
+
return { core: [m[1], m[2], m[3]], pre: m[4] ? m[4].split(".") : [] };
|
|
23
|
+
}
|
|
24
|
+
/** A version npm will accept as an exact version (strict SemVer). */
|
|
25
|
+
export function isExactVersion(version) {
|
|
26
|
+
return parseSemver(version) !== null;
|
|
27
|
+
}
|
|
28
|
+
/** A semver prerelease (`x.y.z-<pre>`): a beta (or rc, alpha…) install. Anything that does not parse is not one. */
|
|
29
|
+
export function isPrereleaseVersion(version) {
|
|
30
|
+
return (parseSemver(version)?.pre.length ?? 0) > 0;
|
|
31
|
+
}
|
|
32
|
+
/** Two numeric identifiers, exactly at any size: no leading zeros, so the longer is the larger. */
|
|
33
|
+
function compareNumeric(a, b) {
|
|
34
|
+
if (a.length !== b.length)
|
|
35
|
+
return a.length < b.length ? -1 : 1;
|
|
36
|
+
return a === b ? 0 : a < b ? -1 : 1;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Semver order: -1 when a < b, 0 when equal, 1 when a > b; null when either
|
|
40
|
+
* does not parse. A prerelease ranks below its own release (2.1.10-beta.6 <
|
|
41
|
+
* 2.1.10); numeric identifiers compare as exact integers (no float rounding),
|
|
42
|
+
* below alphanumeric ones, which compare in ASCII order.
|
|
43
|
+
*/
|
|
44
|
+
export function compareSemver(a, b) {
|
|
45
|
+
const pa = parseSemver(a), pb = parseSemver(b);
|
|
46
|
+
if (!pa || !pb)
|
|
47
|
+
return null;
|
|
48
|
+
for (let i = 0; i < 3; i++) {
|
|
49
|
+
const order = compareNumeric(pa.core[i], pb.core[i]);
|
|
50
|
+
if (order !== 0)
|
|
51
|
+
return order;
|
|
52
|
+
}
|
|
53
|
+
if (pa.pre.length === 0 || pb.pre.length === 0)
|
|
54
|
+
return Math.sign(pb.pre.length - pa.pre.length);
|
|
55
|
+
for (let i = 0; i < Math.min(pa.pre.length, pb.pre.length); i++) {
|
|
56
|
+
const x = pa.pre[i], y = pb.pre[i];
|
|
57
|
+
if (x === y)
|
|
58
|
+
continue;
|
|
59
|
+
const nx = /^\d+$/.test(x), ny = /^\d+$/.test(y);
|
|
60
|
+
if (nx && ny)
|
|
61
|
+
return compareNumeric(x, y);
|
|
62
|
+
if (nx !== ny)
|
|
63
|
+
return nx ? -1 : 1;
|
|
64
|
+
return x < y ? -1 : 1;
|
|
65
|
+
}
|
|
66
|
+
return Math.sign(pa.pre.length - pb.pre.length);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The npm selector `agend update` installs from. An explicit choice wins
|
|
70
|
+
* (`--version`, then `--beta`, then `--stable`); with none, the line the
|
|
71
|
+
* installed version is on — a prerelease install stays on `@beta`, so a beta
|
|
72
|
+
* user is never moved to `@latest` without asking. `installedVersion` is the
|
|
73
|
+
* version of the package being replaced (the CLI's own package.json), never
|
|
74
|
+
* the version of whatever code happened to call it.
|
|
75
|
+
*/
|
|
76
|
+
export function getUpdateSelector(opts, installedVersion) {
|
|
77
|
+
if (opts.version)
|
|
78
|
+
return opts.version;
|
|
79
|
+
if (opts.beta)
|
|
80
|
+
return "beta";
|
|
81
|
+
if (opts.stable)
|
|
82
|
+
return "latest";
|
|
83
|
+
return isPrereleaseVersion(installedVersion) ? "beta" : "latest";
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Which "update available" line to post. A beta install's `/update` stays on
|
|
87
|
+
* the beta channel, so a newer STABLE release needs `--stable` — say so rather
|
|
88
|
+
* than "Run: /update", which would not move it there.
|
|
89
|
+
*/
|
|
90
|
+
export function updateNoticeKey(currentVersion, targetVersion) {
|
|
91
|
+
return isPrereleaseVersion(currentVersion) && !isPrereleaseVersion(targetVersion) ? "update.available_stable" : "update.available_current";
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The install would go back to an older version, and nobody asked for that.
|
|
95
|
+
* `--force`, `--version` and `--stable` are asking; an unknown target or a
|
|
96
|
+
* version that does not parse cannot be judged, and is not refused.
|
|
97
|
+
*/
|
|
98
|
+
export function isUnrequestedDowngrade(installedVersion, targetVersion, opts) {
|
|
99
|
+
if (opts.force || opts.version || opts.stable || targetVersion === null)
|
|
100
|
+
return false;
|
|
101
|
+
const order = compareSemver(targetVersion, installedVersion);
|
|
102
|
+
return order !== null && order < 0;
|
|
5
103
|
}
|
|
6
104
|
/**
|
|
7
105
|
* Query the registry without making update availability a hard dependency.
|
package/dist/update-check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
|