opencode-qwen-oauth 2.1.0 ā 2.3.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/README.md +54 -6
- package/bin/install.js +30 -14
- package/dist/api-key-exchange.d.ts +20 -0
- package/dist/api-key-exchange.d.ts.map +1 -0
- package/dist/api-key-exchange.js +91 -0
- package/dist/api-key-exchange.js.map +1 -0
- package/dist/credentials.d.ts +16 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +75 -0
- package/dist/credentials.js.map +1 -0
- package/dist/diagnostic.d.ts +49 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +438 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +432 -49
- package/dist/index.js.map +1 -1
- package/dist/oauth.d.ts +2 -0
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +71 -26
- package/dist/oauth.js.map +1 -1
- package/dist/request-queue.d.ts +10 -0
- package/dist/request-queue.d.ts.map +1 -0
- package/dist/request-queue.js +22 -0
- package/dist/request-queue.js.map +1 -0
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +5 -0
- package/dist/retry.js.map +1 -1
- package/dist/token-test.d.ts +7 -0
- package/dist/token-test.d.ts.map +1 -0
- package/dist/token-test.js +69 -0
- package/dist/token-test.js.map +1 -0
- package/dist/validation.d.ts +6 -4
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +27 -15
- package/dist/validation.js.map +1 -1
- package/package.json +8 -6
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagnostic utilities for testing Qwen OAuth endpoints
|
|
3
|
+
*/
|
|
4
|
+
import { QWEN_OAUTH_BASE_URL, QWEN_DEVICE_CODE_ENDPOINT, QWEN_TOKEN_ENDPOINT, QWEN_API_BASE_URL, QWEN_CLIENT_ID, QWEN_SCOPES, } from "./constants.js";
|
|
5
|
+
import { createPkcePair } from "./pkce.js";
|
|
6
|
+
import { openBrowser } from "./browser.js";
|
|
7
|
+
import { writeFileSync, mkdirSync, existsSync, readFileSync } from "node:fs";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { homedir } from "node:os";
|
|
10
|
+
/**
|
|
11
|
+
* Test if Qwen OAuth device code endpoint is accessible
|
|
12
|
+
*/
|
|
13
|
+
export async function testDeviceCodeEndpoint() {
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
const endpoint = `${QWEN_OAUTH_BASE_URL}${QWEN_DEVICE_CODE_ENDPOINT}`;
|
|
16
|
+
try {
|
|
17
|
+
const { verifier, challenge } = createPkcePair();
|
|
18
|
+
const params = new URLSearchParams({
|
|
19
|
+
client_id: QWEN_CLIENT_ID,
|
|
20
|
+
scope: QWEN_SCOPES.join(" "),
|
|
21
|
+
code_challenge: challenge,
|
|
22
|
+
code_challenge_method: "S256",
|
|
23
|
+
});
|
|
24
|
+
const response = await fetch(endpoint, {
|
|
25
|
+
method: "POST",
|
|
26
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
27
|
+
body: params.toString(),
|
|
28
|
+
});
|
|
29
|
+
const responseTime = Date.now() - startTime;
|
|
30
|
+
const data = await response.json().catch(() => null);
|
|
31
|
+
return {
|
|
32
|
+
success: response.ok,
|
|
33
|
+
endpoint,
|
|
34
|
+
status: response.status,
|
|
35
|
+
statusText: response.statusText,
|
|
36
|
+
data,
|
|
37
|
+
responseTime,
|
|
38
|
+
error: response.ok ? undefined : (data && typeof data === 'object' && 'error' in data ? String(data.error) : response.statusText),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
endpoint,
|
|
45
|
+
error: error instanceof Error ? error.message : String(error),
|
|
46
|
+
responseTime: Date.now() - startTime,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Test if Qwen API endpoint is accessible
|
|
52
|
+
* Tests the /chat/completions endpoint (OpenAI-compatible)
|
|
53
|
+
*/
|
|
54
|
+
export async function testAPIEndpoint(baseURL, token) {
|
|
55
|
+
const startTime = Date.now();
|
|
56
|
+
const endpoint = `${baseURL}/chat/completions`;
|
|
57
|
+
try {
|
|
58
|
+
const headers = {
|
|
59
|
+
"Content-Type": "application/json",
|
|
60
|
+
};
|
|
61
|
+
if (token) {
|
|
62
|
+
headers["Authorization"] = `Bearer ${token}`;
|
|
63
|
+
}
|
|
64
|
+
// Make a test request to the chat completions endpoint
|
|
65
|
+
const response = await fetch(endpoint, {
|
|
66
|
+
method: "POST",
|
|
67
|
+
headers,
|
|
68
|
+
body: JSON.stringify({
|
|
69
|
+
model: "qwen3-coder-plus",
|
|
70
|
+
messages: [{ role: "user", content: "test" }],
|
|
71
|
+
max_tokens: 1,
|
|
72
|
+
}),
|
|
73
|
+
});
|
|
74
|
+
const responseTime = Date.now() - startTime;
|
|
75
|
+
const data = await response.json().catch(() => null);
|
|
76
|
+
// For API endpoints, we consider:
|
|
77
|
+
// - 200 = success (with valid token)
|
|
78
|
+
// - 401 = endpoint exists but needs auth (without token)
|
|
79
|
+
// - Other statuses = endpoint might not exist or has issues
|
|
80
|
+
const endpointExists = response.status === 200 || response.status === 401;
|
|
81
|
+
return {
|
|
82
|
+
success: response.ok,
|
|
83
|
+
endpoint,
|
|
84
|
+
status: response.status,
|
|
85
|
+
statusText: response.statusText,
|
|
86
|
+
data,
|
|
87
|
+
responseTime,
|
|
88
|
+
error: response.ok ? undefined : (data && typeof data === 'object' && 'error' in data ?
|
|
89
|
+
JSON.stringify(data.error) : response.statusText),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
endpoint,
|
|
96
|
+
error: error instanceof Error ? error.message : String(error),
|
|
97
|
+
responseTime: Date.now() - startTime,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Test if the base OAuth URL is accessible
|
|
103
|
+
*/
|
|
104
|
+
export async function testBaseURL() {
|
|
105
|
+
const startTime = Date.now();
|
|
106
|
+
const endpoint = QWEN_OAUTH_BASE_URL;
|
|
107
|
+
try {
|
|
108
|
+
const response = await fetch(endpoint, {
|
|
109
|
+
method: "GET",
|
|
110
|
+
redirect: "manual",
|
|
111
|
+
});
|
|
112
|
+
const responseTime = Date.now() - startTime;
|
|
113
|
+
return {
|
|
114
|
+
success: response.status < 400,
|
|
115
|
+
endpoint,
|
|
116
|
+
status: response.status,
|
|
117
|
+
statusText: response.statusText,
|
|
118
|
+
responseTime,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
endpoint,
|
|
125
|
+
error: error instanceof Error ? error.message : String(error),
|
|
126
|
+
responseTime: Date.now() - startTime,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Run all diagnostic tests
|
|
132
|
+
*/
|
|
133
|
+
export async function runDiagnostics(token) {
|
|
134
|
+
console.log("Running Qwen OAuth diagnostics...\n");
|
|
135
|
+
const baseURL = await testBaseURL();
|
|
136
|
+
console.log(`[Base URL] ${baseURL.endpoint}`);
|
|
137
|
+
console.log(` Status: ${baseURL.success ? "ā" : "ā"} ${baseURL.status || "N/A"}`);
|
|
138
|
+
console.log(` Time: ${baseURL.responseTime}ms`);
|
|
139
|
+
if (baseURL.error)
|
|
140
|
+
console.log(` Error: ${baseURL.error}`);
|
|
141
|
+
console.log();
|
|
142
|
+
const deviceCode = await testDeviceCodeEndpoint();
|
|
143
|
+
console.log(`[Device Code] ${deviceCode.endpoint}`);
|
|
144
|
+
console.log(` Status: ${deviceCode.success ? "ā" : "ā"} ${deviceCode.status || "N/A"}`);
|
|
145
|
+
console.log(` Time: ${deviceCode.responseTime}ms`);
|
|
146
|
+
if (deviceCode.error)
|
|
147
|
+
console.log(` Error: ${deviceCode.error}`);
|
|
148
|
+
if (deviceCode.data) {
|
|
149
|
+
console.log(` Response: ${JSON.stringify(deviceCode.data, null, 2)}`);
|
|
150
|
+
}
|
|
151
|
+
console.log();
|
|
152
|
+
// Test only the API endpoint that supports OAuth tokens
|
|
153
|
+
// OAuth tokens from chat.qwen.ai only work with portal.qwen.ai
|
|
154
|
+
const apiEndpoints = [
|
|
155
|
+
QWEN_API_BASE_URL, // https://portal.qwen.ai/v1 - the only one that works with OAuth
|
|
156
|
+
];
|
|
157
|
+
const apis = {};
|
|
158
|
+
console.log("[API Endpoints] Testing /chat/completions on multiple base URLs...\n");
|
|
159
|
+
for (const apiURL of apiEndpoints) {
|
|
160
|
+
const result = await testAPIEndpoint(apiURL, token);
|
|
161
|
+
apis[apiURL] = result;
|
|
162
|
+
const statusIcon = result.success ? "ā" :
|
|
163
|
+
(result.status === 401 ? "ā " : "ā");
|
|
164
|
+
console.log(` ${statusIcon} ${apiURL}`);
|
|
165
|
+
console.log(` Status: ${result.status || "N/A"} (${result.responseTime}ms)`);
|
|
166
|
+
if (token && result.status === 401) {
|
|
167
|
+
console.log(` Note: Token provided but endpoint rejected it`);
|
|
168
|
+
}
|
|
169
|
+
else if (!token && result.status === 401) {
|
|
170
|
+
console.log(` Note: Endpoint exists but requires authentication`);
|
|
171
|
+
}
|
|
172
|
+
if (result.error)
|
|
173
|
+
console.log(` Error: ${result.error}`);
|
|
174
|
+
}
|
|
175
|
+
console.log();
|
|
176
|
+
return { baseURL, deviceCode, apis };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Run the OAuth device flow to get a token
|
|
180
|
+
*/
|
|
181
|
+
export async function runOAuthFlow() {
|
|
182
|
+
console.log("\nš Starting OAuth Device Flow...\n");
|
|
183
|
+
const { verifier, challenge } = createPkcePair();
|
|
184
|
+
// Step 1: Request device code
|
|
185
|
+
console.log("1ļøā£ Requesting device code...");
|
|
186
|
+
const deviceParams = new URLSearchParams({
|
|
187
|
+
client_id: QWEN_CLIENT_ID,
|
|
188
|
+
scope: QWEN_SCOPES.join(" "),
|
|
189
|
+
code_challenge: challenge,
|
|
190
|
+
code_challenge_method: "S256",
|
|
191
|
+
});
|
|
192
|
+
const deviceResponse = await fetch(`${QWEN_OAUTH_BASE_URL}${QWEN_DEVICE_CODE_ENDPOINT}`, {
|
|
193
|
+
method: "POST",
|
|
194
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
195
|
+
body: deviceParams.toString(),
|
|
196
|
+
});
|
|
197
|
+
if (!deviceResponse.ok) {
|
|
198
|
+
const error = await deviceResponse.json().catch(() => ({}));
|
|
199
|
+
console.log(`ā Failed to get device code: ${JSON.stringify(error)}`);
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
const deviceData = await deviceResponse.json();
|
|
203
|
+
const { device_code, user_code, verification_uri_complete, verification_uri, expires_in, interval = 5, } = deviceData;
|
|
204
|
+
console.log(` ā Device code received`);
|
|
205
|
+
console.log(` š User code: ${user_code}`);
|
|
206
|
+
console.log(` ā° Expires in: ${expires_in} seconds\n`);
|
|
207
|
+
// Step 2: Open browser and prompt user
|
|
208
|
+
console.log("2ļøā£ Opening browser for authorization...");
|
|
209
|
+
openBrowser(verification_uri_complete || verification_uri);
|
|
210
|
+
console.log(` ā Browser opened\n`);
|
|
211
|
+
// Step 3: Poll for token
|
|
212
|
+
console.log("3ļøā£ Polling for authorization...");
|
|
213
|
+
console.log(` š Enter code: ${user_code}`);
|
|
214
|
+
console.log(` ā³ Waiting for authorization...\n`);
|
|
215
|
+
const startTime = Date.now();
|
|
216
|
+
const timeout = expires_in * 1000;
|
|
217
|
+
const pollingInterval = interval * 1000;
|
|
218
|
+
while (Date.now() - startTime < timeout) {
|
|
219
|
+
await new Promise((resolve) => setTimeout(resolve, pollingInterval));
|
|
220
|
+
const tokenParams = new URLSearchParams({
|
|
221
|
+
client_id: QWEN_CLIENT_ID,
|
|
222
|
+
grant_type: "urn:ietf:params:oauth:grant-type:device_code",
|
|
223
|
+
device_code,
|
|
224
|
+
code_verifier: verifier,
|
|
225
|
+
});
|
|
226
|
+
const tokenResponse = await fetch(`${QWEN_OAUTH_BASE_URL}${QWEN_TOKEN_ENDPOINT}`, {
|
|
227
|
+
method: "POST",
|
|
228
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
229
|
+
body: tokenParams.toString(),
|
|
230
|
+
});
|
|
231
|
+
const tokenData = await tokenResponse.json();
|
|
232
|
+
if (tokenResponse.ok) {
|
|
233
|
+
console.log(` ā Authorization successful!\n`);
|
|
234
|
+
console.log(`āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā`);
|
|
235
|
+
console.log(`š OAuth Flow Complete!`);
|
|
236
|
+
console.log(` Access token: ${tokenData.access_token?.substring(0, 20)}...`);
|
|
237
|
+
console.log(` Refresh token: ${tokenData.refresh_token?.substring(0, 20)}...`);
|
|
238
|
+
console.log(` Expires in: ${tokenData.expires_in} seconds`);
|
|
239
|
+
console.log(`āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n`);
|
|
240
|
+
return {
|
|
241
|
+
access_token: tokenData.access_token,
|
|
242
|
+
refresh_token: tokenData.refresh_token,
|
|
243
|
+
expires_in: tokenData.expires_in,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
if (tokenData.error === "authorization_pending") {
|
|
247
|
+
process.stdout.write(" ā³ Still waiting...\n");
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
if (tokenData.error === "slow_down") {
|
|
251
|
+
console.log(` ā ļø Rate limited, slowing down...`);
|
|
252
|
+
await new Promise((resolve) => setTimeout(resolve, pollingInterval));
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
console.log(` ā Error: ${tokenData.error_description || tokenData.error}`);
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
console.log(` ā Authorization timed out`);
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Refresh an access token
|
|
263
|
+
*/
|
|
264
|
+
export async function refreshToken(refreshToken) {
|
|
265
|
+
const params = new URLSearchParams({
|
|
266
|
+
client_id: QWEN_CLIENT_ID,
|
|
267
|
+
grant_type: "refresh_token",
|
|
268
|
+
refresh_token: refreshToken,
|
|
269
|
+
});
|
|
270
|
+
const response = await fetch(`${QWEN_OAUTH_BASE_URL}${QWEN_TOKEN_ENDPOINT}`, {
|
|
271
|
+
method: "POST",
|
|
272
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
273
|
+
body: params.toString(),
|
|
274
|
+
});
|
|
275
|
+
if (!response.ok) {
|
|
276
|
+
const error = await response.json().catch(() => ({}));
|
|
277
|
+
console.log(`ā Token refresh failed: ${JSON.stringify(error)}`);
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
const data = await response.json();
|
|
281
|
+
return {
|
|
282
|
+
access_token: data.access_token,
|
|
283
|
+
expires_in: data.expires_in,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Save token to file for later use
|
|
288
|
+
*/
|
|
289
|
+
function saveTokenToFile(token, refreshToken, expiresIn) {
|
|
290
|
+
const configDir = join(homedir(), ".config", "opencode");
|
|
291
|
+
if (!existsSync(configDir)) {
|
|
292
|
+
mkdirSync(configDir, { recursive: true });
|
|
293
|
+
}
|
|
294
|
+
const tokenData = {
|
|
295
|
+
access_token: token,
|
|
296
|
+
refresh_token: refreshToken,
|
|
297
|
+
expires_in: expiresIn,
|
|
298
|
+
expires_at: Date.now() + expiresIn * 1000,
|
|
299
|
+
saved_at: new Date().toISOString(),
|
|
300
|
+
};
|
|
301
|
+
const tokenPath = join(configDir, "qwen-test-token.json");
|
|
302
|
+
writeFileSync(tokenPath, JSON.stringify(tokenData, null, 2));
|
|
303
|
+
return tokenPath;
|
|
304
|
+
}
|
|
305
|
+
// CLI interface for running diagnostics
|
|
306
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
307
|
+
const args = process.argv.slice(2);
|
|
308
|
+
const token = args[0];
|
|
309
|
+
const runOAuth = args.includes("--oauth") || args.includes("-o");
|
|
310
|
+
const loadToken = args.includes("--load") || args.includes("-l");
|
|
311
|
+
const doRefresh = args.includes("--refresh") || args.includes("-r");
|
|
312
|
+
async function main() {
|
|
313
|
+
let accessToken = token;
|
|
314
|
+
// Show usage if no args and no token
|
|
315
|
+
if (!token && !runOAuth && !loadToken && !doRefresh) {
|
|
316
|
+
console.log("\nš Usage:");
|
|
317
|
+
console.log(" node dist/diagnostic.js # Run basic diagnostics");
|
|
318
|
+
console.log(" node dist/diagnostic.js <token> # Run diagnostics with token");
|
|
319
|
+
console.log(" node dist/diagnostic.js --oauth # Run OAuth flow + diagnostics");
|
|
320
|
+
console.log(" node dist/diagnostic.js --load # Load saved token and test");
|
|
321
|
+
console.log(" node dist/diagnostic.js --refresh # Refresh saved token and test\n");
|
|
322
|
+
}
|
|
323
|
+
// Load token from file if --load flag
|
|
324
|
+
if (loadToken) {
|
|
325
|
+
const configDir = join(homedir(), ".config", "opencode");
|
|
326
|
+
const tokenPath = join(configDir, "qwen-test-token.json");
|
|
327
|
+
try {
|
|
328
|
+
if (existsSync(tokenPath)) {
|
|
329
|
+
const tokenData = JSON.parse(readFileSync(tokenPath, "utf-8"));
|
|
330
|
+
if (tokenData.expires_at > Date.now()) {
|
|
331
|
+
accessToken = tokenData.access_token;
|
|
332
|
+
console.log(`š Loaded token from: ${tokenPath}`);
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
console.log(`ā° Token expired at: ${new Date(tokenData.expires_at).toISOString()}`);
|
|
336
|
+
console.log(` Run --oauth to get a new token`);
|
|
337
|
+
return; // Exit early
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
console.log(`š No saved token found at: ${tokenPath}`);
|
|
342
|
+
console.log(` Run --oauth to authenticate`);
|
|
343
|
+
return; // Exit early
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch (e) {
|
|
347
|
+
console.log(`ā Failed to load token: ${e}`);
|
|
348
|
+
return; // Exit early
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// Refresh token if --refresh flag
|
|
352
|
+
if (doRefresh) {
|
|
353
|
+
const configDir = join(homedir(), ".config", "opencode");
|
|
354
|
+
const tokenPath = join(configDir, "qwen-test-token.json");
|
|
355
|
+
try {
|
|
356
|
+
if (existsSync(tokenPath)) {
|
|
357
|
+
const tokenData = JSON.parse(readFileSync(tokenPath, "utf-8"));
|
|
358
|
+
console.log(`š Refreshing token...`);
|
|
359
|
+
const refreshed = await refreshToken(tokenData.refresh_token);
|
|
360
|
+
if (refreshed) {
|
|
361
|
+
accessToken = refreshed.access_token;
|
|
362
|
+
const newTokenData = {
|
|
363
|
+
access_token: accessToken,
|
|
364
|
+
refresh_token: tokenData.refresh_token,
|
|
365
|
+
expires_in: refreshed.expires_in,
|
|
366
|
+
expires_at: Date.now() + refreshed.expires_in * 1000,
|
|
367
|
+
saved_at: new Date().toISOString(),
|
|
368
|
+
};
|
|
369
|
+
writeFileSync(tokenPath, JSON.stringify(newTokenData, null, 2));
|
|
370
|
+
console.log(`š¾ Token refreshed and saved to: ${tokenPath}`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
catch (e) {
|
|
375
|
+
console.log(`ā Failed to refresh token: ${e}`);
|
|
376
|
+
return; // Exit early
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// Run OAuth flow if --oauth flag
|
|
380
|
+
if (runOAuth) {
|
|
381
|
+
const oauthResult = await runOAuthFlow();
|
|
382
|
+
if (oauthResult) {
|
|
383
|
+
accessToken = oauthResult.access_token;
|
|
384
|
+
// Save token to file
|
|
385
|
+
const tokenPath = saveTokenToFile(oauthResult.access_token, oauthResult.refresh_token, oauthResult.expires_in);
|
|
386
|
+
console.log(`š¾ Token saved to: ${tokenPath}`);
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
console.log("ā OAuth flow failed or was cancelled");
|
|
390
|
+
process.exit(1);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const results = await runDiagnostics(accessToken);
|
|
394
|
+
const allSuccess = results.baseURL.success && results.deviceCode.success;
|
|
395
|
+
const anyAPIWorks = Object.values(results.apis).some(api => api.success);
|
|
396
|
+
const anyAPIExists = Object.values(results.apis).some(api => api.status === 401 || api.success);
|
|
397
|
+
console.log(`\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā`);
|
|
398
|
+
console.log(`OAuth Status: ${allSuccess ? "ā PASS" : "ā FAIL"}`);
|
|
399
|
+
if (accessToken) {
|
|
400
|
+
console.log(`API Status: ${anyAPIWorks ? "ā Working with token" : "ā Failed with token"}`);
|
|
401
|
+
// Show which endpoints work with the token
|
|
402
|
+
const workingEndpoints = Object.entries(results.apis)
|
|
403
|
+
.filter(([_, result]) => result.success)
|
|
404
|
+
.map(([url]) => url);
|
|
405
|
+
const failedEndpoints = Object.entries(results.apis)
|
|
406
|
+
.filter(([_, result]) => !result.success)
|
|
407
|
+
.map(([url]) => url);
|
|
408
|
+
if (workingEndpoints.length > 0) {
|
|
409
|
+
console.log(`\nā
Endpoints working with OAuth token:`);
|
|
410
|
+
workingEndpoints.forEach(url => console.log(` - ${url}`));
|
|
411
|
+
}
|
|
412
|
+
if (failedEndpoints.length > 0) {
|
|
413
|
+
console.log(`\nā ļø Endpoints NOT supporting OAuth token:`);
|
|
414
|
+
failedEndpoints.forEach(url => console.log(` - ${url}`));
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
console.log(`API Status: ${anyAPIExists ? "ā Endpoints exist (need token)" : "ā No endpoints found"}`);
|
|
419
|
+
}
|
|
420
|
+
if (anyAPIWorks) {
|
|
421
|
+
const workingEndpoint = Object.entries(results.apis).find(([_, result]) => result.success);
|
|
422
|
+
if (workingEndpoint) {
|
|
423
|
+
console.log(`\nš” Recommended API base URL: ${workingEndpoint[0]}`);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
else if (anyAPIExists && !accessToken) {
|
|
427
|
+
const existingEndpoint = Object.entries(results.apis).find(([_, result]) => result.status === 401);
|
|
428
|
+
if (existingEndpoint) {
|
|
429
|
+
console.log(`\nš” Recommended API base URL: ${existingEndpoint[0]}`);
|
|
430
|
+
console.log(`ā¹ļø Run with --oauth flag to test with authentication`);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
console.log(`āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n`);
|
|
434
|
+
process.exit(allSuccess ? 0 : 1);
|
|
435
|
+
}
|
|
436
|
+
main();
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=diagnostic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../src/diagnostic.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AA8B/D,eAAO,MAAM,eAAe,EAAE,MAsmB7B,CAAC;AAEF,eAAe,eAAe,CAAC"}
|