dsh-plugin-upgrader 1.6.2 → 1.7.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 +84 -0
- package/README.en.md +45 -2
- package/README.md +35 -1
- package/assets/icon-180.png +0 -0
- package/lib/client.js +258 -7
- package/lib/host/hostinfo.d.ts +82 -0
- package/lib/host/hostinfo.d.ts.map +1 -0
- package/lib/host/hostinfo.js +92 -0
- package/lib/host/hostinfo.js.map +1 -0
- package/lib/host/install.d.ts +19 -1
- package/lib/host/install.d.ts.map +1 -1
- package/lib/host/install.js +166 -8
- package/lib/host/install.js.map +1 -1
- package/lib/host/overview.d.ts +19 -0
- package/lib/host/overview.d.ts.map +1 -1
- package/lib/host/overview.js +27 -3
- package/lib/host/overview.js.map +1 -1
- package/lib/host/registry.d.ts +50 -1
- package/lib/host/registry.d.ts.map +1 -1
- package/lib/host/registry.js +63 -2
- package/lib/host/registry.js.map +1 -1
- package/lib/host/runtime.d.ts +13 -0
- package/lib/host/runtime.d.ts.map +1 -0
- package/lib/host/runtime.js +114 -0
- package/lib/host/runtime.js.map +1 -0
- package/lib/host/version.d.ts +22 -3
- package/lib/host/version.d.ts.map +1 -1
- package/lib/host/version.js +278 -3
- package/lib/host/version.js.map +1 -1
- package/lib/index.d.ts +78 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +109 -14
- package/lib/index.js.map +1 -1
- package/package.json +2 -1
package/lib/host/registry.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module dsh-plugin-upgrader/lib/registry
|
|
9
9
|
*/
|
|
10
|
-
import { compareVersions, releasePathOf } from './version.js';
|
|
10
|
+
import { compareVersions, releasePathOf, satisfiesRange } from './version.js';
|
|
11
11
|
import { githubUrlOf } from './repo.js';
|
|
12
12
|
/** How long one registry packument stays fresh. */
|
|
13
13
|
export const PACKUMENT_TTL_MS = 5 * 60 * 1000;
|
|
@@ -56,6 +56,63 @@ export const TAGS_TTL_MS = 30 * 60 * 1000;
|
|
|
56
56
|
export const TAGS_RETRY_MS = 5 * 60 * 1000;
|
|
57
57
|
/** Tag lookups must not hang a page render. */
|
|
58
58
|
export const TAGS_TIMEOUT_MS = 8 * 1000;
|
|
59
|
+
/** Peer names the host's compatibility gate treats as "the DSH runtime". */
|
|
60
|
+
const DSH_PEER = '@deepseek-ai/dsh';
|
|
61
|
+
const DSH_PEER_PREFIX = '@deepseek-ai/dsh-';
|
|
62
|
+
/** Peer values that mean "the version this was built in", not a real range. */
|
|
63
|
+
const WORKSPACE_PEERS = new Set(['workspace:^', 'workspace:~', 'workspace:*']);
|
|
64
|
+
/**
|
|
65
|
+
* Read the DSH requirement out of one published manifest.
|
|
66
|
+
*
|
|
67
|
+
* This mirrors the host gate exactly: `engines.dsh` decides alone when present,
|
|
68
|
+
* and only otherwise do the `@deepseek-ai/dsh*` peer ranges matter. Reading them
|
|
69
|
+
* in the other order would mark versions usable that the host then refuses,
|
|
70
|
+
* which is the failure this whole path exists to prevent.
|
|
71
|
+
*
|
|
72
|
+
* @param manifest - one entry of a packument's `versions` map.
|
|
73
|
+
* @returns the requirement, or `undefined` when the manifest declares none.
|
|
74
|
+
*/
|
|
75
|
+
export function dshRequirementOf(manifest) {
|
|
76
|
+
const engine = manifest?.engines?.dsh ?? manifest?.dsh?.engines?.dsh;
|
|
77
|
+
if (typeof engine === 'string' && engine.trim() !== '') {
|
|
78
|
+
return { range: engine.trim(), source: 'engines', count: 1 };
|
|
79
|
+
}
|
|
80
|
+
const peers = manifest?.peerDependencies;
|
|
81
|
+
if (peers === null || peers === undefined || typeof peers !== 'object')
|
|
82
|
+
return undefined;
|
|
83
|
+
const ranges = [];
|
|
84
|
+
for (const [name, value] of Object.entries(peers)) {
|
|
85
|
+
if (name !== DSH_PEER && !name.startsWith(DSH_PEER_PREFIX))
|
|
86
|
+
continue;
|
|
87
|
+
if (typeof value !== 'string')
|
|
88
|
+
continue;
|
|
89
|
+
const range = value.trim();
|
|
90
|
+
// A workspace peer names the build tree, not a release: the host reads it as
|
|
91
|
+
// "the running runtime", so it never excludes anything.
|
|
92
|
+
if (range === '' || WORKSPACE_PEERS.has(range))
|
|
93
|
+
continue;
|
|
94
|
+
ranges.push(range);
|
|
95
|
+
}
|
|
96
|
+
if (ranges.length === 0)
|
|
97
|
+
return undefined;
|
|
98
|
+
return { range: ranges.join(' '), source: 'peers', count: ranges.length };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Does one published version admit a runtime version?
|
|
102
|
+
*
|
|
103
|
+
* @param manifest - the published manifest.
|
|
104
|
+
* @param runtimeVersion - the DSH build this process is running, when known.
|
|
105
|
+
* @returns `false` only when both sides are known and the range rejects the
|
|
106
|
+
* runtime; `undefined` when either side is missing.
|
|
107
|
+
*/
|
|
108
|
+
export function meetsDshRequirement(manifest, runtimeVersion) {
|
|
109
|
+
const requirement = dshRequirementOf(manifest);
|
|
110
|
+
if (requirement === undefined)
|
|
111
|
+
return undefined;
|
|
112
|
+
if (runtimeVersion === undefined)
|
|
113
|
+
return undefined;
|
|
114
|
+
return satisfiesRange(runtimeVersion, requirement.range);
|
|
115
|
+
}
|
|
59
116
|
/**
|
|
60
117
|
* How long a failed packument lookup is remembered.
|
|
61
118
|
*
|
|
@@ -446,7 +503,7 @@ function probeFailure(error) {
|
|
|
446
503
|
* @param tagNames - the repository's tag names, when known.
|
|
447
504
|
* @returns the slice.
|
|
448
505
|
*/
|
|
449
|
-
export function shapePackument(packument, installedVersion, tagNames) {
|
|
506
|
+
export function shapePackument(packument, installedVersion, tagNames, runtimeVersion) {
|
|
450
507
|
const versionsRecord = packument?.versions;
|
|
451
508
|
if (versionsRecord === null || versionsRecord === undefined || typeof versionsRecord !== 'object') {
|
|
452
509
|
return { versions: [], tags: {}, versionError: 'registry returned no versions' };
|
|
@@ -465,6 +522,8 @@ export function shapePackument(packument, installedVersion, tagNames) {
|
|
|
465
522
|
const rows = names.map((version) => {
|
|
466
523
|
const manifest = versionsRecord[version] ?? {};
|
|
467
524
|
const engine = manifest?.engines?.dsh ?? manifest?.dsh?.engines?.dsh;
|
|
525
|
+
const requirement = dshRequirementOf(manifest);
|
|
526
|
+
const compatible = meetsDshRequirement(manifest, runtimeVersion);
|
|
468
527
|
return {
|
|
469
528
|
version,
|
|
470
529
|
time: typeof timeRecord[version] === 'string' ? timeRecord[version] : undefined,
|
|
@@ -473,6 +532,8 @@ export function shapePackument(packument, installedVersion, tagNames) {
|
|
|
473
532
|
current: version === installedVersion,
|
|
474
533
|
latest: false,
|
|
475
534
|
url: repoUrl === undefined ? undefined : releasePathOf(tagNames, version),
|
|
535
|
+
...(compatible === false ? { compatible: false } : {}),
|
|
536
|
+
...(requirement === undefined ? {} : { requires: requirement.range }),
|
|
476
537
|
};
|
|
477
538
|
});
|
|
478
539
|
rows.sort((left, right) => compareVersions(right.version, left.version));
|
package/lib/host/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/host/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/host/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DSH runtime version behind one process's argv.
|
|
3
|
+
*
|
|
4
|
+
* `argv[1]` is the host entry point. `ENV` overrides are deliberately not
|
|
5
|
+
* consulted: guessing a version would make the page disagree with the gate,
|
|
6
|
+
* and a page that says "compatible" about a version the host then refuses is
|
|
7
|
+
* worse than a page that says nothing.
|
|
8
|
+
*
|
|
9
|
+
* @param argv - `process.argv` of the host process.
|
|
10
|
+
* @returns the version, or `undefined` when it cannot be determined.
|
|
11
|
+
*/
|
|
12
|
+
export declare function runtimeVersionOf(argv: readonly string[]): string | undefined;
|
|
13
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/host/runtime.ts"],"names":[],"mappings":"AA4FA;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAQ5E"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which DSH runtime this host process is actually running.
|
|
3
|
+
*
|
|
4
|
+
* The compatibility gate inside the host compares a plugin's declared DSH
|
|
5
|
+
* requirement against one specific version, and that comparison decides whether
|
|
6
|
+
* an install happens at all. To mark versions before anyone clicks, the page has
|
|
7
|
+
* to know the same number — the version of the `@deepseek-ai/dsh-app-boot` copy
|
|
8
|
+
* whose code this process actually loaded, because that is the manifest the gate
|
|
9
|
+
* reads.
|
|
10
|
+
*
|
|
11
|
+
* Which copy that is depends on how the host was started. Under the desktop
|
|
12
|
+
* shell the entry point lives inside `app.asar`, so resolution finds the bundled
|
|
13
|
+
* build (0.2.1-rc.5 was measured). A terminal start runs the profile's
|
|
14
|
+
* `dsh/lib/bin.js`, so resolution finds the profile's copy — which for a linked
|
|
15
|
+
* profile is a junction into an npx cache and can be an entirely different build
|
|
16
|
+
* (0.1.2-rc.1 was measured). Starting from the entry point gets the right answer
|
|
17
|
+
* in both cases; reading a fixed path would get the second one wrong whenever
|
|
18
|
+
* the two disagree, and a page that calls installable releases uninstallable is
|
|
19
|
+
* worse than a page that says nothing.
|
|
20
|
+
*
|
|
21
|
+
* @module dsh-plugin-upgrader/lib/runtime
|
|
22
|
+
*/
|
|
23
|
+
import { readFileSync } from 'node:fs';
|
|
24
|
+
import { createRequire } from 'node:module';
|
|
25
|
+
import { dirname, join } from 'node:path';
|
|
26
|
+
/** The package whose version the host's compatibility gate quotes. */
|
|
27
|
+
const RUNTIME_PACKAGE = '@deepseek-ai/dsh-app-boot';
|
|
28
|
+
/** Every candidate entry point the lookup walks up from. */
|
|
29
|
+
const ENTRY_DEPTH = 6;
|
|
30
|
+
/** How many process entries the runtime package may be found under. */
|
|
31
|
+
const MAX_WALK = 10;
|
|
32
|
+
/**
|
|
33
|
+
* Read a version out of a package manifest.
|
|
34
|
+
*
|
|
35
|
+
* @param path - the `package.json` to read.
|
|
36
|
+
* @returns its `version`, or `undefined` when it cannot be read.
|
|
37
|
+
*/
|
|
38
|
+
function versionAt(path) {
|
|
39
|
+
try {
|
|
40
|
+
const raw = JSON.parse(readFileSync(path, 'utf8'));
|
|
41
|
+
return typeof raw.version === 'string' && raw.version.trim() !== '' ? raw.version.trim() : undefined;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Find the runtime package's manifest by walking up from an entry point.
|
|
49
|
+
*
|
|
50
|
+
* A plugin cannot import the host's dependency graph, but every layout that
|
|
51
|
+
* ships DSH puts the entry point inside `node_modules`, so the sibling install
|
|
52
|
+
* is reachable by path. The walk stops at the first `@deepseek-ai` directory
|
|
53
|
+
* containing the package, which is the copy the host itself resolves to.
|
|
54
|
+
*
|
|
55
|
+
* @param entry - a file path inside the running host.
|
|
56
|
+
* @returns the manifest path, or `undefined`.
|
|
57
|
+
*/
|
|
58
|
+
function manifestBeside(entry) {
|
|
59
|
+
let directory = dirname(entry);
|
|
60
|
+
for (let depth = 0; depth < MAX_WALK; depth += 1) {
|
|
61
|
+
const candidate = join(directory, 'node_modules', RUNTIME_PACKAGE, 'package.json');
|
|
62
|
+
if (versionAt(candidate) !== undefined)
|
|
63
|
+
return candidate;
|
|
64
|
+
const next = dirname(directory);
|
|
65
|
+
if (next === directory)
|
|
66
|
+
return undefined;
|
|
67
|
+
directory = next;
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve the runtime version from one entry point.
|
|
73
|
+
*
|
|
74
|
+
* @param entry - a file path inside the running host.
|
|
75
|
+
* @returns the version, or `undefined` when nothing could be read.
|
|
76
|
+
*/
|
|
77
|
+
function versionFrom(entry) {
|
|
78
|
+
try {
|
|
79
|
+
const resolved = createRequire(entry).resolve(`${RUNTIME_PACKAGE}/package.json`);
|
|
80
|
+
const version = versionAt(resolved);
|
|
81
|
+
if (version !== undefined)
|
|
82
|
+
return version;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Resolution from a bundled or asar entry can fail outright; the path walk
|
|
86
|
+
// below covers the layouts where it does.
|
|
87
|
+
}
|
|
88
|
+
const manifest = manifestBeside(entry);
|
|
89
|
+
return manifest === undefined ? undefined : versionAt(manifest);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The DSH runtime version behind one process's argv.
|
|
93
|
+
*
|
|
94
|
+
* `argv[1]` is the host entry point. `ENV` overrides are deliberately not
|
|
95
|
+
* consulted: guessing a version would make the page disagree with the gate,
|
|
96
|
+
* and a page that says "compatible" about a version the host then refuses is
|
|
97
|
+
* worse than a page that says nothing.
|
|
98
|
+
*
|
|
99
|
+
* @param argv - `process.argv` of the host process.
|
|
100
|
+
* @returns the version, or `undefined` when it cannot be determined.
|
|
101
|
+
*/
|
|
102
|
+
export function runtimeVersionOf(argv) {
|
|
103
|
+
for (const candidate of argv.slice(1, 1 + ENTRY_DEPTH)) {
|
|
104
|
+
if (typeof candidate !== 'string' || candidate === '')
|
|
105
|
+
continue;
|
|
106
|
+
if (!candidate.endsWith('.js') && !candidate.endsWith('.cjs') && !candidate.endsWith('.mjs'))
|
|
107
|
+
continue;
|
|
108
|
+
const version = versionFrom(candidate);
|
|
109
|
+
if (version !== undefined)
|
|
110
|
+
return version;
|
|
111
|
+
}
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/host/runtime.ts"],"names":[],"mappings":"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"}
|
package/lib/host/version.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Version ordering
|
|
2
|
+
* Version ordering, release-link helpers, and range matching.
|
|
3
3
|
*
|
|
4
4
|
* Everything here is pure: no I/O, no clock, no ambient state. The host half
|
|
5
|
-
* uses it to sort published versions
|
|
6
|
-
* line opens, and
|
|
5
|
+
* uses it to sort published versions, to decide which GitHub page a version
|
|
6
|
+
* line opens, and to answer whether a published version is allowed on the
|
|
7
|
+
* runtime this profile is actually running.
|
|
7
8
|
*
|
|
8
9
|
* @module dsh-plugin-upgrader/lib/version
|
|
9
10
|
*/
|
|
@@ -38,6 +39,24 @@ export declare function comparePre(left: readonly string[], right: readonly stri
|
|
|
38
39
|
* @returns negative when left is older.
|
|
39
40
|
*/
|
|
40
41
|
export declare function compareVersions(left: string | undefined | null, right: string | undefined | null): number;
|
|
42
|
+
/**
|
|
43
|
+
* Does a version fall inside a manifest range?
|
|
44
|
+
*
|
|
45
|
+
* The host gate calls `semver.satisfies(version, range, { includePrerelease:
|
|
46
|
+
* true })` before it installs anything, so prereleases take part in comparisons
|
|
47
|
+
* here for the same reason: a plugin declaring `>=0.2.0-rc.2 <0.3.0-0` accepts
|
|
48
|
+
* the `0.2.1-rc.5` build people actually run, and marking that version
|
|
49
|
+
* unusable would be a lie.
|
|
50
|
+
*
|
|
51
|
+
* Ranges this module cannot parse answer `true`. A manifest written in a way
|
|
52
|
+
* this parser does not understand must never be the reason a version is called
|
|
53
|
+
* incompatible — the host stays the judge, and the page only loses a hint.
|
|
54
|
+
*
|
|
55
|
+
* @param version - the version to test, such as `0.2.1-rc.5`.
|
|
56
|
+
* @param range - a range as a manifest writes it; `''` means "no limit".
|
|
57
|
+
* @returns whether the version is inside the range.
|
|
58
|
+
*/
|
|
59
|
+
export declare function satisfiesRange(version: string | undefined | null, range: string | undefined | null): boolean;
|
|
41
60
|
/**
|
|
42
61
|
* The tag a published version was released under.
|
|
43
62
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/host/version.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/host/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,GAAG,EAAE,MAAM,EAAE,CAAA;CACd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAWlF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAsBpF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAUzG;AAkPD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAClC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAC/B,OAAO,CA0BT;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG5F"}
|
package/lib/host/version.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Version ordering
|
|
2
|
+
* Version ordering, release-link helpers, and range matching.
|
|
3
3
|
*
|
|
4
4
|
* Everything here is pure: no I/O, no clock, no ambient state. The host half
|
|
5
|
-
* uses it to sort published versions
|
|
6
|
-
* line opens, and
|
|
5
|
+
* uses it to sort published versions, to decide which GitHub page a version
|
|
6
|
+
* line opens, and to answer whether a published version is allowed on the
|
|
7
|
+
* runtime this profile is actually running.
|
|
7
8
|
*
|
|
8
9
|
* @module dsh-plugin-upgrader/lib/version
|
|
9
10
|
*/
|
|
@@ -80,6 +81,280 @@ export function compareVersions(left, right) {
|
|
|
80
81
|
a.patch - b.patch ||
|
|
81
82
|
comparePre(a.pre, b.pre));
|
|
82
83
|
}
|
|
84
|
+
/** A wildcard segment, which a range may write as `x`, `X`, or `*`. */
|
|
85
|
+
const WILDCARD = /^[xX*]$/;
|
|
86
|
+
/**
|
|
87
|
+
* Parse one possibly-partial version, the way a range writes it.
|
|
88
|
+
*
|
|
89
|
+
* @param value - `1`, `1.2`, `1.2.3`, `1.2.x`, `1.2.3-rc.1`.
|
|
90
|
+
* @returns the parts, with `null` for absent or wildcard segments, or `null`
|
|
91
|
+
* when the text is not a version at all.
|
|
92
|
+
*/
|
|
93
|
+
function parsePartial(value) {
|
|
94
|
+
const text = value.trim().replace(/^v/, '');
|
|
95
|
+
const match = /^(\d+|[xX*])(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(text);
|
|
96
|
+
if (match === null)
|
|
97
|
+
return null;
|
|
98
|
+
const segment = (raw) => {
|
|
99
|
+
if (raw === undefined || WILDCARD.test(raw))
|
|
100
|
+
return null;
|
|
101
|
+
return Number(raw);
|
|
102
|
+
};
|
|
103
|
+
const major = segment(match[1]);
|
|
104
|
+
// A wildcard in a lower segment means "any value here", so the segments
|
|
105
|
+
// after it cannot narrow the range either: `1.x.3` is `1.x`.
|
|
106
|
+
const minor = major === null ? null : segment(match[2]);
|
|
107
|
+
const patch = minor === null ? null : segment(match[3]);
|
|
108
|
+
return {
|
|
109
|
+
major,
|
|
110
|
+
minor,
|
|
111
|
+
patch,
|
|
112
|
+
pre: match[4] === undefined ? [] : match[4].split('.'),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Build one comparator.
|
|
117
|
+
*
|
|
118
|
+
* @param op - the comparison.
|
|
119
|
+
* @param major - major segment.
|
|
120
|
+
* @param minor - minor segment.
|
|
121
|
+
* @param patch - patch segment.
|
|
122
|
+
* @param pre - prerelease identifiers.
|
|
123
|
+
* @returns the comparator.
|
|
124
|
+
*/
|
|
125
|
+
function bound(op, major, minor, patch, pre = []) {
|
|
126
|
+
return { op, parts: { major, minor, patch, pre: [...pre] } };
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The lower bound semver writes for a partial range, `>=x.y.z-0`.
|
|
130
|
+
*
|
|
131
|
+
* A missing segment means "any value here", so the range has to start below
|
|
132
|
+
* that segment's first release — prereleases of it included. That is why
|
|
133
|
+
* `1.2` expands to `>=1.2.0-0`, not `>=1.2.0`: the latter would reject
|
|
134
|
+
* `1.2.0-rc.1`, which a partial range accepts.
|
|
135
|
+
*
|
|
136
|
+
* `>=0.0.0-0` is true of every version, so it is dropped rather than emitted;
|
|
137
|
+
* carrying it would only make the comparator list longer than the one semver
|
|
138
|
+
* builds, and these lists are compared against semver's in the test suite.
|
|
139
|
+
*
|
|
140
|
+
* @param major - major segment.
|
|
141
|
+
* @param minor - minor segment.
|
|
142
|
+
* @param patch - patch segment.
|
|
143
|
+
* @param pre - prerelease identifiers; `['0']` when a segment was missing.
|
|
144
|
+
* @returns zero or one comparator.
|
|
145
|
+
*/
|
|
146
|
+
function atLeast(major, minor, patch, pre = []) {
|
|
147
|
+
if (major === 0 && minor === 0 && patch === 0 && pre.length === 1 && pre[0] === '0')
|
|
148
|
+
return [];
|
|
149
|
+
return [bound('>=', major, minor, patch, pre)];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The exclusive upper bound semver writes as `<x.y.z-0` for a partial range.
|
|
153
|
+
*
|
|
154
|
+
* The `-0` matters: with prereleases in play, `<0.3.0` would still admit
|
|
155
|
+
* `0.3.0-rc.1`, while `<0.3.0-0` does not. Plugin authors write this bound by
|
|
156
|
+
* hand (`<0.3.0-0`) and the ranges below have to mean the same thing.
|
|
157
|
+
*
|
|
158
|
+
* @param major - upper major.
|
|
159
|
+
* @param minor - upper minor.
|
|
160
|
+
* @param patch - upper patch.
|
|
161
|
+
* @returns the comparator.
|
|
162
|
+
*/
|
|
163
|
+
function belowRelease(major, minor, patch) {
|
|
164
|
+
return bound('<', major, minor, patch, ['0']);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Expand one written version into the comparators it stands for.
|
|
168
|
+
*
|
|
169
|
+
* The expansions follow `node-semver`, which is what the host's compatibility
|
|
170
|
+
* gate uses; agreeing with it is the whole point, because a version this page
|
|
171
|
+
* calls usable and the host then refuses is worse than no marking at all.
|
|
172
|
+
* `test/version.test.ts` pins the table below against the real package.
|
|
173
|
+
*
|
|
174
|
+
* @param partial - the version as written.
|
|
175
|
+
* @param op - the operator in front of it, `^` and `~` included.
|
|
176
|
+
* @returns comparators, or `null` when the range is not understood.
|
|
177
|
+
*/
|
|
178
|
+
function expand(partial, op) {
|
|
179
|
+
const { major, minor, patch, pre } = partial;
|
|
180
|
+
if (major === null)
|
|
181
|
+
return [];
|
|
182
|
+
const M = major;
|
|
183
|
+
const m = minor ?? 0;
|
|
184
|
+
const p = patch ?? 0;
|
|
185
|
+
/** A missing segment widens the range downwards, prereleases included. */
|
|
186
|
+
const open = ['0'];
|
|
187
|
+
switch (op) {
|
|
188
|
+
case '^':
|
|
189
|
+
if (minor === null)
|
|
190
|
+
return [...atLeast(M, 0, 0, open), belowRelease(M + 1, 0, 0)];
|
|
191
|
+
if (patch === null) {
|
|
192
|
+
return M === 0
|
|
193
|
+
? [...atLeast(0, m, 0, open), belowRelease(0, m + 1, 0)]
|
|
194
|
+
: [...atLeast(M, m, 0, open), belowRelease(M + 1, 0, 0)];
|
|
195
|
+
}
|
|
196
|
+
if (M !== 0)
|
|
197
|
+
return [bound('>=', M, m, p, pre), belowRelease(M + 1, 0, 0)];
|
|
198
|
+
if (m !== 0)
|
|
199
|
+
return [bound('>=', 0, m, p, pre), belowRelease(0, m + 1, 0)];
|
|
200
|
+
return [bound('>=', 0, 0, p, pre), belowRelease(0, 0, p + 1)];
|
|
201
|
+
case '~':
|
|
202
|
+
// `~1.2.3` is `>=1.2.3 <1.3.0`, so the lower bound keeps the patch —
|
|
203
|
+
// that is what makes `~0.1.7-rc.1` refuse `0.1.6`.
|
|
204
|
+
if (minor === null)
|
|
205
|
+
return [...atLeast(M, 0, 0, open), belowRelease(M + 1, 0, 0)];
|
|
206
|
+
if (patch === null)
|
|
207
|
+
return [...atLeast(M, m, 0, open), belowRelease(M, m + 1, 0)];
|
|
208
|
+
return [bound('>=', M, m, p, pre), belowRelease(M, m + 1, 0)];
|
|
209
|
+
case '>':
|
|
210
|
+
if (minor === null)
|
|
211
|
+
return [bound('>=', M + 1, 0, 0)];
|
|
212
|
+
if (patch === null)
|
|
213
|
+
return [bound('>=', M, m + 1, 0)];
|
|
214
|
+
return [bound('>', M, m, p, pre)];
|
|
215
|
+
case '>=':
|
|
216
|
+
if (minor === null)
|
|
217
|
+
return atLeast(M, 0, 0, open);
|
|
218
|
+
if (patch === null)
|
|
219
|
+
return atLeast(M, m, 0, open);
|
|
220
|
+
return [bound('>=', M, m, p, pre)];
|
|
221
|
+
case '<':
|
|
222
|
+
if (minor === null)
|
|
223
|
+
return [belowRelease(M, 0, 0)];
|
|
224
|
+
if (patch === null)
|
|
225
|
+
return [belowRelease(M, m, 0)];
|
|
226
|
+
return [bound('<', M, m, p, pre)];
|
|
227
|
+
case '<=':
|
|
228
|
+
if (minor === null)
|
|
229
|
+
return [belowRelease(M + 1, 0, 0)];
|
|
230
|
+
if (patch === null)
|
|
231
|
+
return [belowRelease(M, m + 1, 0)];
|
|
232
|
+
return [bound('<=', M, m, p, pre)];
|
|
233
|
+
default:
|
|
234
|
+
if (minor === null)
|
|
235
|
+
return [...atLeast(M, 0, 0, open), belowRelease(M + 1, 0, 0)];
|
|
236
|
+
if (patch === null)
|
|
237
|
+
return [...atLeast(M, m, 0, open), belowRelease(M, m + 1, 0)];
|
|
238
|
+
return [bound('=', M, m, p, pre)];
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Turn one alternative such as `>=0.2.0-rc.2 <0.3.0-0` into comparators.
|
|
243
|
+
*
|
|
244
|
+
* Two pieces of syntax are handled before the comparator loop: a hyphen range
|
|
245
|
+
* (`1.2.3 - 2.0.0`) and an operator separated from its version by a space
|
|
246
|
+
* (`>= 0.2.0`). Both are written by hand in real manifests, and refusing to
|
|
247
|
+
* read them would silently turn a real bound into "anything goes".
|
|
248
|
+
*
|
|
249
|
+
* @param text - one alternative, already split on `||`.
|
|
250
|
+
* @returns comparators, or `null` when a piece is not understood.
|
|
251
|
+
*/
|
|
252
|
+
function parseAlternative(text) {
|
|
253
|
+
const trimmed = text.trim();
|
|
254
|
+
if (trimmed === '')
|
|
255
|
+
return [];
|
|
256
|
+
const hyphen = /^(\S+)\s+-\s+(\S+)$/.exec(trimmed);
|
|
257
|
+
if (hyphen !== null) {
|
|
258
|
+
const low = parsePartial(hyphen[1]);
|
|
259
|
+
const high = parsePartial(hyphen[2]);
|
|
260
|
+
if (low === null || high === null)
|
|
261
|
+
return null;
|
|
262
|
+
/*
|
|
263
|
+
* A hyphen range is inclusive on both ends, and with prereleases in play
|
|
264
|
+
* semver widens it: `1.2.3 - 2.0.0` becomes `>=1.2.3-0 <2.0.1-0`. The lower
|
|
265
|
+
* `-0` admits `1.2.3-beta.1`; the upper bound bumps the last written
|
|
266
|
+
* segment so `2.0.1-rc.1` stays out.
|
|
267
|
+
*/
|
|
268
|
+
const from = low.pre.length === 0 ? atLeast(low.major ?? 0, low.minor ?? 0, low.patch ?? 0, ['0']) : expand(low, '>=');
|
|
269
|
+
const upperMajor = high.major === null ? 0 : high.major;
|
|
270
|
+
const upperMinor = high.minor === null ? 0 : high.minor;
|
|
271
|
+
const upperPatch = high.patch === null ? 0 : high.patch;
|
|
272
|
+
const to = high.minor === null
|
|
273
|
+
? [belowRelease(upperMajor + 1, 0, 0)]
|
|
274
|
+
: high.patch === null
|
|
275
|
+
? [belowRelease(upperMajor, upperMinor + 1, 0)]
|
|
276
|
+
: [belowRelease(upperMajor, upperMinor, upperPatch + 1)];
|
|
277
|
+
if (from === null)
|
|
278
|
+
return null;
|
|
279
|
+
return [...from, ...to];
|
|
280
|
+
}
|
|
281
|
+
const comparators = [];
|
|
282
|
+
const normalized = trimmed.replace(/(~|\^|>=|<=|>|<|=)\s+(\S)/g, '$1$2');
|
|
283
|
+
for (const token of normalized.split(/\s+/)) {
|
|
284
|
+
const match = /^(~|\^|>=|<=|>|<|=)?(.+)$/.exec(token);
|
|
285
|
+
if (match === null)
|
|
286
|
+
return null;
|
|
287
|
+
const partial = parsePartial(match[2]);
|
|
288
|
+
if (partial === null)
|
|
289
|
+
return null;
|
|
290
|
+
const expanded = expand(partial, match[1] ?? '=');
|
|
291
|
+
if (expanded === null)
|
|
292
|
+
return null;
|
|
293
|
+
comparators.push(...expanded);
|
|
294
|
+
}
|
|
295
|
+
return comparators;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Compare two parsed versions.
|
|
299
|
+
*
|
|
300
|
+
* @param left - left version.
|
|
301
|
+
* @param right - right version.
|
|
302
|
+
* @returns negative, zero, or positive.
|
|
303
|
+
*/
|
|
304
|
+
function compareParts(left, right) {
|
|
305
|
+
return (left.major - right.major ||
|
|
306
|
+
left.minor - right.minor ||
|
|
307
|
+
left.patch - right.patch ||
|
|
308
|
+
comparePre(left.pre, right.pre));
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Does a version fall inside a manifest range?
|
|
312
|
+
*
|
|
313
|
+
* The host gate calls `semver.satisfies(version, range, { includePrerelease:
|
|
314
|
+
* true })` before it installs anything, so prereleases take part in comparisons
|
|
315
|
+
* here for the same reason: a plugin declaring `>=0.2.0-rc.2 <0.3.0-0` accepts
|
|
316
|
+
* the `0.2.1-rc.5` build people actually run, and marking that version
|
|
317
|
+
* unusable would be a lie.
|
|
318
|
+
*
|
|
319
|
+
* Ranges this module cannot parse answer `true`. A manifest written in a way
|
|
320
|
+
* this parser does not understand must never be the reason a version is called
|
|
321
|
+
* incompatible — the host stays the judge, and the page only loses a hint.
|
|
322
|
+
*
|
|
323
|
+
* @param version - the version to test, such as `0.2.1-rc.5`.
|
|
324
|
+
* @param range - a range as a manifest writes it; `''` means "no limit".
|
|
325
|
+
* @returns whether the version is inside the range.
|
|
326
|
+
*/
|
|
327
|
+
export function satisfiesRange(version, range) {
|
|
328
|
+
const text = String(range ?? '').trim();
|
|
329
|
+
if (text === '')
|
|
330
|
+
return true;
|
|
331
|
+
const parts = parseVersion(version);
|
|
332
|
+
if (parts === null)
|
|
333
|
+
return true;
|
|
334
|
+
for (const alternative of text.split('||')) {
|
|
335
|
+
const comparators = parseAlternative(alternative);
|
|
336
|
+
if (comparators === null)
|
|
337
|
+
return true;
|
|
338
|
+
const passes = comparators.every((comparator) => {
|
|
339
|
+
const delta = compareParts(parts, comparator.parts);
|
|
340
|
+
switch (comparator.op) {
|
|
341
|
+
case '<':
|
|
342
|
+
return delta < 0;
|
|
343
|
+
case '<=':
|
|
344
|
+
return delta <= 0;
|
|
345
|
+
case '>':
|
|
346
|
+
return delta > 0;
|
|
347
|
+
case '>=':
|
|
348
|
+
return delta >= 0;
|
|
349
|
+
default:
|
|
350
|
+
return delta === 0;
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
if (passes)
|
|
354
|
+
return true;
|
|
355
|
+
}
|
|
356
|
+
return false;
|
|
357
|
+
}
|
|
83
358
|
/**
|
|
84
359
|
* The tag a published version was released under.
|
|
85
360
|
*
|