@0xmaxma/claude-gateway 1.3.23 → 1.3.24
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/api/packages.d.ts.map +1 -1
- package/dist/api/packages.js +92 -16
- package/dist/api/packages.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/api/packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/api/packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAsDlC,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AA4HD,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CA0L/D"}
|
package/dist/api/packages.js
CHANGED
|
@@ -9,10 +9,19 @@ const child_process_1 = require("child_process");
|
|
|
9
9
|
const fs_1 = require("fs");
|
|
10
10
|
const path_1 = require("path");
|
|
11
11
|
const auth_1 = require("./auth");
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const migrator_1 = require("../config/migrator");
|
|
13
|
+
// URL param "name" → package config.
|
|
14
|
+
// claude-gateway is a genuine npm global — keep npm detect/update.
|
|
15
|
+
// claude-code ships via the native installer (no longer an npm global), so
|
|
16
|
+
// detect from the `claude` binary and update via its native updater.
|
|
17
|
+
const PACKAGES = {
|
|
18
|
+
'claude-gateway': { npm: '@0xmaxma/claude-gateway', detect: 'npm', update: 'npm' },
|
|
19
|
+
'claude-code': {
|
|
20
|
+
npm: '@anthropic-ai/claude-code',
|
|
21
|
+
detect: 'binary',
|
|
22
|
+
bin: 'claude',
|
|
23
|
+
update: 'native',
|
|
24
|
+
},
|
|
16
25
|
};
|
|
17
26
|
const CACHE_TTL_MS = 5 * 60 * 1000;
|
|
18
27
|
let versionCache = null;
|
|
@@ -40,6 +49,42 @@ function getNpmListVersion(packageName) {
|
|
|
40
49
|
return null;
|
|
41
50
|
}
|
|
42
51
|
}
|
|
52
|
+
// Resolve the installed version by shelling out to the binary on PATH
|
|
53
|
+
// (e.g. `claude --version` → "2.1.207 (Claude Code)"). Parses the leading
|
|
54
|
+
// semver (with optional prerelease) and returns null on any failure —
|
|
55
|
+
// binary missing, non-zero exit, or unparseable output. `bin` is always a
|
|
56
|
+
// trusted constant from PACKAGES, never request-derived.
|
|
57
|
+
function getBinaryVersion(bin) {
|
|
58
|
+
try {
|
|
59
|
+
const output = (0, child_process_1.execSync)(`${bin} --version`, {
|
|
60
|
+
encoding: 'utf-8',
|
|
61
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
62
|
+
timeout: 10000,
|
|
63
|
+
});
|
|
64
|
+
// `claude --version` prints the version first (e.g. "2.1.207 (Claude Code)").
|
|
65
|
+
// Anchor to the start of the trimmed output so a version-like token later in
|
|
66
|
+
// the line can never be mistaken for the installed version.
|
|
67
|
+
const match = output.trim().match(/^(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/);
|
|
68
|
+
return match ? match[1] : null;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Resolve the currently-installed version per the package's detect strategy.
|
|
75
|
+
function resolveCurrent(config) {
|
|
76
|
+
if (config.detect === 'binary' && config.bin) {
|
|
77
|
+
return getBinaryVersion(config.bin);
|
|
78
|
+
}
|
|
79
|
+
return getNpmListVersion(config.npm);
|
|
80
|
+
}
|
|
81
|
+
// An update is available only when `latest` is strictly newer than `current`.
|
|
82
|
+
// Using semver ordering (not `current !== latest`) avoids a false "update
|
|
83
|
+
// available" when the installed version is *ahead* of the npm-registry latest
|
|
84
|
+
// — e.g. a native-installer channel that leads the npm dist-tag.
|
|
85
|
+
function updateAvailable(current, latest) {
|
|
86
|
+
return !!(current && latest && (0, migrator_1.compareSemver)(latest, current) > 0);
|
|
87
|
+
}
|
|
43
88
|
async function getLatestVersion(packageName) {
|
|
44
89
|
const encodedName = packageName.replace('/', '%2F');
|
|
45
90
|
const res = await fetch(`https://registry.npmjs.org/${encodedName}/latest`);
|
|
@@ -49,17 +94,17 @@ async function getLatestVersion(packageName) {
|
|
|
49
94
|
return data.version ?? null;
|
|
50
95
|
}
|
|
51
96
|
async function fetchAllPackageVersions() {
|
|
52
|
-
const
|
|
53
|
-
// Run all synchronous
|
|
54
|
-
const currents =
|
|
55
|
-
return Promise.all(
|
|
97
|
+
const configs = Object.values(PACKAGES);
|
|
98
|
+
// Run all synchronous current-version lookups before entering async Promise.all
|
|
99
|
+
const currents = configs.map(resolveCurrent);
|
|
100
|
+
return Promise.all(configs.map(async (config, i) => {
|
|
56
101
|
const current = currents[i];
|
|
57
|
-
const latest = await getLatestVersion(
|
|
102
|
+
const latest = await getLatestVersion(config.npm);
|
|
58
103
|
return {
|
|
59
|
-
package:
|
|
104
|
+
package: config.npm,
|
|
60
105
|
current,
|
|
61
106
|
latest,
|
|
62
|
-
hasUpdate:
|
|
107
|
+
hasUpdate: updateAvailable(current, latest),
|
|
63
108
|
};
|
|
64
109
|
}));
|
|
65
110
|
}
|
|
@@ -146,12 +191,13 @@ function createPackagesRouter(apiKeys) {
|
|
|
146
191
|
}
|
|
147
192
|
}
|
|
148
193
|
const { name } = req.params;
|
|
149
|
-
const
|
|
150
|
-
if (!
|
|
194
|
+
const config = PACKAGES[name];
|
|
195
|
+
if (!config) {
|
|
151
196
|
res.status(404).json({ error: `unknown package: ${name}` });
|
|
152
197
|
return;
|
|
153
198
|
}
|
|
154
|
-
const
|
|
199
|
+
const packageName = config.npm;
|
|
200
|
+
const from = resolveCurrent(config);
|
|
155
201
|
let latest;
|
|
156
202
|
try {
|
|
157
203
|
latest = await getLatestVersion(packageName);
|
|
@@ -164,8 +210,8 @@ function createPackagesRouter(apiKeys) {
|
|
|
164
210
|
res.status(503).json({ error: 'registry unavailable' });
|
|
165
211
|
return;
|
|
166
212
|
}
|
|
167
|
-
// Already on latest — no install needed
|
|
168
|
-
if (from
|
|
213
|
+
// Already on latest (or ahead of it) — no install needed
|
|
214
|
+
if (from && !updateAvailable(from, latest)) {
|
|
169
215
|
res.json({ package: packageName, from, to: from, updated: false, warning: null });
|
|
170
216
|
return;
|
|
171
217
|
}
|
|
@@ -176,6 +222,36 @@ function createPackagesRouter(apiKeys) {
|
|
|
176
222
|
}
|
|
177
223
|
isUpdating = true;
|
|
178
224
|
try {
|
|
225
|
+
// Native-installer packages (e.g. claude-code) update the binary on PATH
|
|
226
|
+
// via their own updater. npm install -g would write a separate npm copy
|
|
227
|
+
// that isn't the running binary, so it must not be used here.
|
|
228
|
+
if (config.update === 'native' && config.bin) {
|
|
229
|
+
let updateErr = null;
|
|
230
|
+
try {
|
|
231
|
+
(0, child_process_1.execSync)(`${config.bin} update`, {
|
|
232
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
233
|
+
timeout: 300000,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
updateErr = err;
|
|
238
|
+
}
|
|
239
|
+
if (updateErr !== null) {
|
|
240
|
+
const stderr = updateErr.stderr?.toString() ??
|
|
241
|
+
updateErr.message ??
|
|
242
|
+
'update failed';
|
|
243
|
+
res.status(500).json({ error: stderr });
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
// Invalidate version cache and re-read the actual binary version.
|
|
247
|
+
// The native updater may legitimately be a no-op (already newest on its
|
|
248
|
+
// own channel), so report `updated` from whether the version changed.
|
|
249
|
+
versionCache = null;
|
|
250
|
+
const to = resolveCurrent(config);
|
|
251
|
+
res.json({ package: packageName, from, to, updated: to !== from, warning: null });
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
// npm-global packages (e.g. claude-gateway) update via npm install -g.
|
|
179
255
|
// Resolve npm global root for temp dir cleanup
|
|
180
256
|
let npmRoot = '';
|
|
181
257
|
try {
|
package/dist/api/packages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/api/packages.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/api/packages.ts"],"names":[],"mappings":"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"}
|